我希望我的 .htaccess
文件将所有 404 页面重定向到主页并删除所有页面上的尾部斜杠。但是,带有尾部斜杠的 404 页面会获得 2 次重定向。我该如何解决这个问题?
现在:
www.example.com/notfound/
--> www.example.com/notfound
--> www.example.com
我想要的:
www.example.com/notfound/
--> www.example.com
这是我的 .htaccess
文件:
ErrorDocument 404 https://www.example.com
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^(.*)/$ https://www.example.com/$1 [R,L]
答案 0 :(得分:2)
改为这样做:
ErrorDocument 404 https://www.example.com/
RewriteEngine On
RewriteCond %{DOCUMENT_ROOT}/$1 -f
RewriteRule ^(.*)/$ /$1 [R,L]
当请求没有映射到一个目录时,不是删除尾部斜杠,而是当请求(没有尾部斜杠)映射到一个物理文件时,你真的想删除尾部斜杠。这样可以避免删除已经是 404 的请求的尾部斜杠。
您检查 REQUEST_URI
服务器变量的第二个条件完全是多余的。
移除尾部斜杠的重定向应该是 301(永久),而不是 302(临时)——但这取决于你。
但是,为了强调我上面的评论,除非您有特定的理由这样做,否则重定向到 404 和/或将您的主页作为 404 通常对 SEO 和可用性不利。< /p>