将 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.
显示的内容
在我的网站上,两者都
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.