验证死链修复后的响应,核心不是看死链工具里“错误数是否归零”,而是对每个已修复 URL 重新发起一次真实请求,确认返回状态码、跳转终点和页面内容三者一致。只改链接不验证响应,等于没有闭环。
死链工具通常把问题标记为 404、410、超时或跳转异常。修复动作不同,验证对象也不同:
<a href> 改成有效地址。要验证的是新地址返回 200,且落地内容与原链接意图一致。Location 指向正确,并且不形成跳转链。这三种情况混在一起看“死链数量下降”,会漏掉跳转链、软 404 和内容错位。验证时按类型分组,比按工具报表排序更可靠。
最直接的办法是对每个修复 URL 执行一次带跳转跟踪的请求。以命令行工具为例:
curl -sIL -o /dev/null -w "%{http_code} %{url_effective} %{num_redirects}\n" https://example.com/old-page
这条命令输出三样东西:最终状态码、跳转终点、跳转次数。判断条件如下:
url_effective 应与预期的新地址一致。若指向首页,属于典型的“用首页兜底”,对用户和抓取都不算真正修复。num_redirects 最好为 1。若大于 1,说明存在跳转链,应逐跳检查中间环节。如果站点有几百个修复项,逐条手敲不现实。可以先把死链工具导出的 URL 列表整理成一行一个地址的文件,再用脚本批量请求并记录状态码、终点和跳转次数。批量结果里,优先看状态码非 200 和跳转次数大于 1 的行。
返回 200 只说明服务器愿意响应,不说明响应的是正确页面。常见偏差有三类:
<link rel="canonical"> 指向另一个地址,等于告诉搜索引擎“别把这个 URL 当正主”。修复后应检查 canonical 是否指向自身或预期的规范地址。这三类问题不会出现在死链工具的错误计数里。验证时至少抽查标题、canonical 和首屏正文,不能只看状态码。
如果只能先做一部分,按下面顺序安排,代价从低到高:
判断标准可以简化为一句话:状态码 200、跳转次数不超过 1、终点内容与预期主题一致,三项同时满足才算通过。任何一项不满足,回到修复环节重做,而不是在工具里标记为已解决。
下一步,把死链工具导出的已修复 URL 列表按“重定向、改链、恢复”分成三组,先跑重定向组的批量请求,把非 200 和多次跳转的行单独列出来处理。