TrueURL
TrueURL

菜单

免费重定向工具

重定向链检测

追踪从 URL 到最终目标地址之间的每一跳。找出多余的重定向、临时状态码和耗时过长的跳,再把重定向链精简为一次重定向。

什么是重定向链?

重定向链是浏览器或爬虫在到达有内容的页面之前,必须依次跟随的一系列重定向。只有一跳(例如从 /old-page 到 /new-page)是正常的。但规则会年复一年地叠加,重定向链也随之变长:先是 HTTP 到 HTTPS 的规则,然后是 www 规则,接着是末尾斜杠规则,最后还有上次改版留下的规则。下面这条重定向链经过了 4 次重定向,其实一次就够了:

http://example.com/shop          301
https://example.com/shop         301
https://www.example.com/shop     301
https://www.example.com/shop/    302
https://www.example.com/store/   200

过长的重定向链有什么危害

  • 速度:每一跳都是一次独立的请求,通常还要单独进行 DNS 查询和 TLS 握手。在移动网络上,每一跳都可能让页面开始加载前多等几百毫秒。
  • 抓取:Google 抓取工具(Googlebot)最多跟随 10 跳,之后就会报告重定向错误。在大型网站上,每多一跳还会占用本可以留给真实页面的抓取资源。
  • 可靠性:每多一跳,就多一台服务器、一条规则或一张证书,它们都可能出错、形成循环或过期。
  • 信号:重定向链中只要有一个临时状态码,就会削弱您希望搜索引擎看到的永久重定向信号。

如何解读重定向链

每一行代表一跳。状态码表示重定向的类型:301 和 308 是永久重定向,而 302、303 和 307 是临时重定向。方法显示 POST 在哪一跳变成了 GET,浏览器在遇到 301、302 或 303 后就会这样处理。原始的 Location 值准确显示了服务器发送的内容,便于发现相对路径、缺失的斜杠或多余的查询字符串。标记为 meta refresh 或 JavaScript 的跳是在页面 HTML(或 Refresh 响应头)中发现的客户端重定向,而不是来自 Location 响应头。

重定向链有 4 种结束方式:在最终 URL 得到正常响应、出现重定向循环、达到最大跳数上限,或者某一跳出错,例如 DNS 解析失败、超时或证书问题。

如何精简重定向链

  1. 记下重定向链最终应到达的 URL。
  2. 修改第一条重定向规则,让它通过一次 301 或 308 直接指向该最终 URL。
  3. 在服务器或 CDN 上把协议、主机名和斜杠规则合并成一条规则,让 http://example.com/page 直接重定向到 https://www.example.com/page/。
  4. 把内部链接、canonical 标签和站点地图都更新为最终 URL,让访问者和爬虫根本不会触发重定向。
  5. 在这里重新检测旧 URL,确认重定向链只剩一跳。

相关指南

常见问题

重定向链中有几次重定向算太多?

目标是从任何旧 URL 到最终 URL 只经过一次重定向。在无法避免时,两次也可以接受,例如先从 HTTP 升级到 HTTPS,再更换主机名。TrueURL 会对超过 3 次重定向的链发出警告。Googlebot 在 10 跳之后会放弃,浏览器则在大约 20 次后停止,并报“重定向次数过多”错误。

重定向链会损失链接权重吗?

Google 表示,3xx 重定向不会损失 PageRank,因此重定向链不会直接稀释排名信号。实际问题在于页面变慢、浪费抓取请求,以及链中某一跳出错或使用临时重定向的可能性更高。应把重定向链当作技术债务,及时精简。

重定向链和重定向循环有什么区别?

重定向链终究会结束,停在一个最终 URL 上。重定向循环则永远不会结束,因为它会回到一个已经访问过的 URL,浏览器会显示错误而不是页面。TrueURL 两者都能检测;重定向循环检测介绍了循环的常见原因和修复方法。

可以检测以 POST 请求开始的重定向链吗?

可以。在高级设置中将 HTTP 方法设为 POST,并添加请求体。之后重定向链会遵循浏览器规则:POST 之后,301、302 或 303 会改用不带请求体的 GET 继续,而 307 或 308 会用相同的请求体再次发送 POST。

检测结果中的“跨域名”是什么意思?

表示最终 URL 的主机名与您输入的不同(开头的 www. 不计在内)。对于短链接和域名迁移,这是正常现象。如果自己网站上的页面意外地被重定向到了其他域名,就要仔细排查:这可能说明规则配置有误、网站被黑,或者存在开放重定向漏洞。

重定向链会包含 meta refresh 和 JavaScript 重定向吗?

默认会。TrueURL 会扫描 HTML 响应中的 meta refresh 标签和简单的 JavaScript 重定向,从那里继续跟踪重定向链,并为这些跳加上标记,方便与 HTTP 重定向区分开。也可以关闭此功能,只查看服务器端重定向,或者使用 Meta Refresh 重定向检测查看详细信息。

为什么某一跳显示的是错误而不是状态码?

这一跳的请求在收到任何 HTTP 响应之前就失败了:主机名无法解析、连接被拒绝或超时、TLS 证书无效,或者重定向指向了无效或被屏蔽的地址。该跳的错误信息会说明具体是哪一种情况。之前的各跳仍会显示,因此可以准确看出重定向链是在哪里中断的。