gpt4 book ai didi

.htaccess - htaccess 在需要 404 时返回 500 错误

转载 作者:行者123 更新时间:2023-12-04 04:37:01 26 4
gpt4 key购买 nike

我怎样才能让我的 htaccess 规则在地址栏中输入无效 url 时返回 404。

导致这种情况的两个规则

RewriteRule ^submit/([a-z]+)/([0-9]+)$ /submit?c=$1&i=$2 [L]

RewriteRule ^test/([a-z]+)/([0-9]+)/([0-9]+)$ /test?c=$1&i=$2&q=$3 [L]

当输入正确的 url 时,这两个规则都可以正常工作,但例如,最后一个参数之一不是数字,它返回 500 错误。

我怎样才能做到这一点,如果这些规则不匹配,那么它会返回 404。

为了进一步澄清采取以下网址 test/cooking/9/1有效。 submit/cooking/9也是如此.

它返回 500 与与重写不匹配的 url,例如,'test/cooking/9/1/1 , submit/0/0/0`,如果上面列出的规则是 ,我希望它返回 404不是 匹配。

完整的 .htaccess 文件
# Turn on rewriting engine
RewriteEngine On

# Internally rewrite submit parameters
RewriteRule ^submit/([a-z]+)/([0-9]+)$ /submit?c=$1&i=$2 [L]

# Internally rewrite test parameters
RewriteRule ^test/([a-z]+)/([0-9]+)/([0-9]+)$ /test?c=$1&i=$2&q=$3 [L]

# Internally rewrite .php
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^/?(.*)$ /$1.php [L]

# Externally redirect .php
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^\ ]+)\.php
RewriteRule ^/?(.*)\.php$ /$1 [L,R=301]

# Add default charset for files
AddDefaultCharset UTF-8

# G-zip deflate compression
<FilesMatch "\\.(js|css|html|htm|php|xml)$">
SetOutputFilter DEFLATE
</FilesMatch>

最佳答案

发生这种情况是因为 apache 正在读取 URI 作为 PATH INFO 的一部分,以及 test 的一部分。或 submit正在匹配 -f检查即使路径的其余部分没有。尝试更改 -f检查到:

RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI}\.php -f

代替:
RewriteCond %{REQUEST_FILENAME}\.php -f

关于.htaccess - htaccess 在需要 404 时返回 500 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19575659/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com