1

我正在用我的服务器响应测试 404 和其他错误,并且 404 工作正常。

我会输入example.com/page, example.com/directory/, example.com/directory/page,它会返回 404 错误。

然后我尝试example.com/directory/page/string了(比如 123 或这里的关键字),它返回了 500 个错误。

我正在使用此代码mod_rewrite

# redirects index.html to /

RewriteCond %{THE_REQUEST} ^.*/index.html
RewriteRule ^(.*)index.html$ /$1 [R=301,L]

# rewrites file.html to file

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^(.+)$ $1.html [L,QSA]

我该怎么做才能将这 500 个错误变成正确的 404?

4

1 回答 1

1

很可能是循环,请尝试添加此条件:

RewriteCond %{ENV:REDIRECT_STATUS} ^$

在你的最终规则中。所以它看起来像这样:

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On

# redirects index.html to /
RewriteCond %{THE_REQUEST} ^.*/index.html
RewriteRule ^(.*)index.html$ /$1 [R=301,L]

# rewrites file.html to file
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^(.+)$ $1.html [L,QSA]
于 2013-08-02T22:16:48.850 回答