将 URL 重定向到规范版本导致 "too many redirections" 错误?

Redirect URL to canonical version cause "too many redirections" error?

在我的网站上,两者都

https://www.datanumen.com/support-doc/access-repair/ (URL1)

https://www.datanumen.com/support-doc/access-repair/index.htm (URL2)

将加载 URL2,因为 Apache 将在文件夹下搜索 index.htm 并加载它。

现在,为了防止这两个 URL 都被 Google 索引,我将规范 URL 设置为 URL2,然后在中添加以下重定向.htaccess,以确保 URL1 将重定向 URL2:

# 2021-12-15: Redirect help document URL to the canonical version
<IfModule mod_rewrite.c>
  RewriteRule ^support-doc/([a-z\-]+)/ /support-doc//index.htm [R=301,L]
</IfModule>

但这会导致“重定向太多”错误。为什么?

这会导致重定向循环,因为 /support-doc/something/index.htm 与正则表达式 ^support-doc/([a-z\-]+)/ 匹配,导致 /support-doc/something/index.htm 重定向到自身。

也许您的意思是将重写规则限制为 URL 以尾部斜线结尾?如果是这样,规则应该是:

RewriteRule ^support-doc/([a-z\-]+)/$ /support-doc//index.htm [R=301,L]

我在规则中添加了一个 $ 意思是“以...结尾”,这样之后的任何内容都不匹配。


我建议从您的规范 URL 中删除 index.htm。一般来说,您的规范 URL 应该是最简单的 URL。 index.htm 对用户不友好,不应该在 URL 中显示。索引文档在那里为网络服务器提供一个文档,其中包含应为目录 URL.

显示的内容