直接答案

重定向链是连续的多个重定向(A → B → C);重定向循环是一个链条回到了它已经访问过的 URL,因此浏览器会以“重定向次数过多”停止。要修复任意一种情况,请追踪该 URL 以查看每一跳,然后让第一个重定向直接指向最终 URL,并移除把流量送回去的规则。

步骤 1:追踪 URL#

在 重定向检查器 中输入该 URL。它会列出每一跳及其状态码,并标记链式重定向、通过明文 HTTP 的跳转、原本应为永久重定向却使用了临时重定向的情况,以及循环。你也可以在终端中追踪:

bashcurl -sIL http://old-site.com/pricing | grep -iE '^(HTTP|location)'

HTTP/1.1 301 Moved Permanently
location: https://old-site.com/pricing
HTTP/2 301
location: https://www.old-site.com/pricing
HTTP/2 301
location: https://new-site.com/pricing
HTTP/2 200

这个示例是一个三跳链。如果相同的 location 行反复出现,直到 curl 停止并显示“Maximum redirects followed”,那就是一个循环。

步骤 2:将链条压缩为一跳#

  1. 记下最终的 URL,也就是返回 200 的那个。
  2. 在 RedirHub 中,打开 Links 里第一个 URL 的链接,并将其目标设置为那个最终 URL,使用 https:// 和正确的主机名(带 www 或不带)。如需一次更改多个链接,请选中它们并使用批量操作栏,或者导入 CSV。
  3. 如果其他网站仍然链接到这些中间重定向,请保留它们,但也要把每一个都直接指向最终 URL。
  4. 再次追踪该 URL。你应该会看到一个 301,然后一个 200。

每多一次跳转,页面开始加载前就会多一次完整往返,而 Google 在放弃某个 URL 之前只会跟随有限次数的跳转,所以目标是只跳转一次。

第 3 步:找出导致循环的原因#

常见的重定向循环及其修复方法
你会看到什么CauseFix
http → https → http → https …一条规则强制使用 HTTPS,而另一条(通常在 CMS 中或 CDN 上)又把流量送回 HTTP。保留一条 HTTPS 规则并移除另一条。CMS 的站点 URL 应以 https:// 开头。
www → 非 www → www …两个系统对规范主机名意见不一致,例如注册商将流量转发到 www,而网站又将其重定向到裸域名。只选择一个主机。将所有重定向,以及网站自身的 URL 设置,都指向该主机。
仅在 Cloudflare 后面循环SSL/TLS 模式为 Flexible:Cloudflare 通过 HTTP 与源站通信,源站重定向到 HTTPS,而 Cloudflare 又通过 HTTP 发起请求。当源站具有有效证书时,将 Cloudflare 的 SSL/TLS 设置为 Full (strict)。
old-site.com → old-site.com/new → old-site.com/new …整个域名的重定向指向同一域名上的某个路径,因此目标又会匹配该重定向。重定向到不同的主机,或将整个域名重定向替换为需要迁移的 URL 的路径链接。
A → B → A两个路径重定向互相指向,通常是在 URL 被移回之后。删除其中一个,或将其指向其他位置。
仅对部分访问者循环目标站点上的 cookie、语言或设备规则会重定向回去。在无痕窗口中进行跟踪,并在目标站点上测试该规则。

第 4 步:再次检查并清除缓存#

浏览器会缓存 301 重定向,因此你已经修复的循环可能仍会在你自己的浏览器中出现。请在无痕窗口中或使用 curl 进行测试,并在需要时清除浏览器缓存。

立即跟踪一个 URL 查看任何公开 URL 的每一次跳转、状态码以及值得修复的问题。

打开重定向检查器

还卡住吗?请参阅 排查新的重定向 了解 DNS 和 HTTPS 问题,以及 匹配,了解请求如何找到其重定向。

常见问题

重定向链是多个重定向,最终到达一个可正常访问的页面(A → B → C)。重定向循环则永远不会结束,因为它会回到之前访问过的 URL(A → B → A),因此浏览器会显示 ERR_TOO_MANY_REDIRECTS。

每次跳转都会增加延迟,而 Google 对每个 URL 只会跟随有限次数的跳转。将第一个重定向直接指向最终 URL 可以避免这两个问题。

追踪该 URL,找出哪两个 URL 在重复,然后移除或重新指向在它们之间传递流量的其中一条规则。最常见的原因是冲突的 http/https 或 www 规则,以及 Cloudflare 的 Flexible SSL 模式。

不能通过整个域名重定向:它会匹配域名上的每个路径,因此也会匹配其自身的目标并形成循环。对于需要迁移的 URL,请使用路径链接,或重定向到不同的主机。

相关帮助

查看全部文章