HTTP 状态链检查器
输入一个 URL,查看它到达目标的每一跳:每个重定向状态码、每个目标、最终 URL,以及最终响应上的安全响应头——由 sysosx 的服务器追踪,所以这条链是互联网其他部分所看到的,而不是你的浏览器已经缓存的内容。
想自动持续监控?用 myeventwatch 免费监控——到期和宕机提醒,无需绑卡。
什么是重定向链
重定向链是浏览器或爬虫在前往你所请求页面的途中实际访问的一系列地址。你输入一个 URL;服务器回答“不在这里了,试试这个”;客户端跟随跳转,下一个服务器可能再给出同样的回答。每一步都是一跳,每一跳都带有一个状态码,说明这是什么样的迁移。只有一跳的链是现代网络的正常形态:普通 http 升级到 https,或者裸顶级域名被发送到 www。两三跳的链通常意味着两个不同的系统都发表了意见——一条 CDN 规则加上一条 CMS 规则,或者一条迁移规则叠加在更旧的规则之上。本页显示的链由 sysosx 的服务器逐跳追踪,每一跳在跟随之前都会重新做安全检查,最多五跳。
每一跳上的状态码是最值得仔细看的部分。301 或 308 表示迁移是永久的:旧地址已经消失,搜索引擎应把它的排名交给新地址。302 或 307 表示临时:旧地址可能还会回来,所以排名保持不动,缓存也不应固化。303 表示“答案在那边”,大多出现在表单提交之后。实际中常见的故障是本应永久却写成了 302——一条匆忙写下的迁移规则——它会悄悄流失排名,并在迁移完成很久之后仍让缓存提供旧地址。链也会以更平淡的方式断裂:跳回较早的地址会无限循环,跳到不同的主机时会丢失路径,从 https 跳回 http 则会抵消第一跳刚刚建立的安全性。
如何阅读结果
结果按顺序列出各跳,从你输入的 URL 开始。一行跳数显示所请求的地址、返回的状态,以及——如果是重定向——它指向的目标。最后一行是实际以内容作答的地址,连同它的状态、服务器响应头(如果发送了的话),以及追踪所用的总时间。在其下方汇总了最终响应上的安全响应头:哪些防护性响应头存在,哪些缺失。以 4xx 或 5xx 状态结束的链不是重定向问题,而是目标本身失败了——链仍然能告诉你是如何到达这个失败的,而修复通常就在那里。出现“重定向过多”的结果意味着第五跳仍然指向前方;所显示的链就是证据,修复方法是缩短它,而不是继续跟随。
相关工具:当问题是不同地点看到不同地址时,用DNS 传播检查;想看全貌——可达性、证书、到期和记录一起看——用网站健康检查;当某一跳落在证书错误上时,用SSL 检查器。
延伸阅读:为什么一个站点从不同地方看不一样——重定向链、DNS 传播和中间缓存,以及如何判断到底是哪一个在咬你。
常见问题
这个检查是从我的浏览器运行,还是从服务器运行?
从服务器。你的浏览器把 URL 发送给 sysosx,sysosx 的检查器从自己的网络位置逐跳跟随每个重定向去抓取它。这正是关键所在:从服务器追踪的链显示的是搜索引擎和访客的网络所看到的,而不是你的浏览器缓存已经知道的。请求来自 sysosx 的检查器,你输入的 URL 是唯一被发送的东西。
为什么起始协议重要?
因为第一跳往往是最重要的一跳。以 http:// 输入的 URL 会从 http 开始追踪,所以升级到 https 会显示为它自己的一跳——这正是审查普通 HTTP 是否真的在重定向时你想要的。以 https:// 输入的 URL 从 https 开始追踪。裸主机名默认使用 https。
不同的重定向状态是什么意思?
301 和 308 是永久的:旧地址一去不返,搜索引擎应把排名转移给新地址。302 和 307 是临时的:旧地址可能还会回来。303 表示“去那边看看”(通常在表单提交之后)。对于站点迁移,你几乎总是需要 301 或 308;一个本应永久的 302 会悄悄流失排名并让缓存混乱。
多少个重定向算太多?
检查器最多跟随五个。一两跳的链是正常的(http 到 https、顶级域名到 www)。三个或更多通常意味着层层累积:一条 CDN 规则、一条 CMS 规则和一条旧的迁移规则依次触发。每一跳都要花一次往返和一点排名信号,超过五跳的链会被报告为过多,而不是无限跟随下去——这么长的链本身就是发现。
为什么有限速?
每次追踪都会逐跳向别人的服务器发出真实请求。为了保持礼貌,每个访客的新追踪次数有限(每小时约二十次,另有短时突发额度),结果会缓存一小时。缓存的结果会如此标注;在 API 调用中加上 ?fresh=1 可以重新检查,同样受这些限制。