【问题标题】:Redirect 404 with .htaccess without redirecting trailing slash使用 .htaccess 重定向 404 而不重定向尾部斜杠
【发布时间】: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 个重定向不一定是“坏的”。)

标签: apache .htaccess redirect mod-rewrite http-status-code-404


【解决方案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 和可用性。

【讨论】:

    猜你喜欢
    • 2016-10-29
    • 1970-01-01
    • 1970-01-01
    • 2018-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-28
    • 2018-07-17
    相关资源
    最近更新 更多