使用 .htaccess 重定向 404 而不重定向尾部斜杠
Posted
技术标签:
【中文标题】使用 .htaccess 重定向 404 而不重定向尾部斜杠【英文标题】:Redirect 404 with .htaccess without redirecting trailing slash 【发布时间】:2021-05-21 00:39:24 【问题描述】:我希望我的.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]
【问题讨论】:
重定向和/或发送 404 请求到主页对于 SEO 和可用性来说通常是个坏主意。 为什么你想这样做有什么特别的原因吗?了解您的 URL 结构(以及您如何路由 URL)也有助于更好地解决这个问题。 (但无论如何,2 个重定向不一定是“坏的”。) 【参考方案1】:改为这样:
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 和可用性。
【讨论】:
以上是关于使用 .htaccess 重定向 404 而不重定向尾部斜杠的主要内容,如果未能解决你的问题,请参考以下文章
wordpress 和 htaccess 301 重定向没有管理员
.htaccess 文件不重定向 http://www。到 https://www
在 Bootstrap 中,如何使用模态重定向到一个部分(而不重定向到打开模态的位置)