重定向检查器

下一步

粘贴一个 URL,检查器会逐跳跟踪 HTTP 重定向链,每一步显示一行,包含状态码(301、302、303、307 或 308)、它指向的 Location,以及响应中声明的服务器和内容类型。它会在第一个非 3xx 响应处停止,或在达到你设定的跳转上限时停止,若某个 URL 又指回已访问过的地址,则会标记为循环。SEO 工作成败全系于这份追踪:多跳链中一个不起眼的 302 就可能流失 PageRank,而过长的链会浪费掉 Google 不会退还的抓取预算。

如何追踪一条重定向链

  1. 1

    输入起始 URL

    任意 URL,HTTPS 或 HTTP,带或不带 `www`。若省略协议,检查器会自动补上。

  2. 2

    设置跳转上限

    选择要跟踪多少次重定向,范围为 1 到 20。默认值会尽早终止失控或循环的链。

  3. 3

    运行检查

    每一跳依次发起请求并继续跟踪,直到返回非 3xx 响应或达到上限为止。

  4. 4

    读取链条

    每一行显示跳转编号、状态码及其类型(永久、临时、OK、客户端错误、服务器错误或循环)、URL,以及它重定向到何处。

重定向状态码及其含义

RFC 7231 与 RFC 7538(针对 308)定义了这些语义。它们之间的差别对 SEO、缓存,以及浏览器是重发 POST 还是退回到 GET 都很重要。

状态码 名称 是否永久? 是否保留方法? 默认是否可缓存?
301 Moved Permanently 历史上否
302 Found 历史上否 仅当头部允许时
303 See Other 强制改为 GET
307 Temporary Redirect 仅当头部允许时
308 Permanent Redirect

对 SEO 而言,301 和 308 会把 PageRank 汇聚到目标地址;302 和 307 则不会(Google 将它们视为临时的,并把源地址保留在索引中)。

一条重定向链应该是什么样

  • 1 跳没问题。 旧 URL 通过一个 301 指向新 URL,不损失链接权重。
  • 2 跳可以接受,前提是其中一跳是从 HTTP 升级到 HTTPS,另一跳是 www 的规范化。
  • 3 跳或更多是危险信号。 每一跳都会增加延迟,而且 Google 明确表示过长的链可能会被放弃。请在服务器端合并该链,让用户和爬虫一步到达目标。

本检查器会跟踪什么、不会跟踪什么

本检查器跟踪服务器端的 HTTP 重定向:任何带 3xx 状态码和 Location 头部的响应。它不会执行页面,因此还有两类重定向不会被跟踪:

  • Meta refresh。 <meta http-equiv="refresh" content="0; url=..."> 是写在页面正文中的 HTML 层重定向,而非 HTTP 头部,因此在这里会显示为一个普通的 200 响应。
  • JavaScript 重定向。 window.location = '...' 在页面加载后于浏览器中运行,服务器端的请求永远看不到它。

如果某个 URL 只通过上述方式之一重定向,请使用带无头浏览器的工具来查看最终目的地。

排查一条损坏的链

大多数损坏的链源于三种原因之一:重定向循环(某一跳指回已访问过的 URL)、丢失的 www 又触发重定向,或结尾斜杠不一致,导致 /page/page/ 相互来回跳转。当某个 URL 重复出现时,检查器会停止并标记该循环。

常见问题

不会。它跟踪服务器端的 HTTP 重定向(带 Location 头部的 3xx 状态码)。meta refresh 和 JavaScript 重定向在页面加载后于页面内部运行,服务器端的请求看不到它们;对于这类情况,请使用带无头浏览器的工具。

你可以跟踪 1 到 20 跳,默认 10 跳。检查器会在你设定的上限处停止,或在某个 URL 指回已访问过的地址时停止,因此重定向循环不会无限进行。

只有当它们能从公网解析时才行。位于 VPN 之后、使用 HTTP 基本认证或位于 localhost(以及其他私有地址)的 URL,检查器无法访问。

对每一跳:其编号、HTTP 状态码及其类型(永久、临时、OK、客户端错误、服务器错误或循环)、请求的 URL、它重定向到的 Location,以及响应中声明的服务器和内容类型。

不会。每个请求都会即时发起,其结果直接返回给你;你粘贴的 URL 不会被记录。

相关工具

此工具还提供其他语言版本