死链检测在测试环境和线上环境的对照,核心不是把两边结果直接相减,而是先统一“链接来源”和“判定标准”,再分别采集,最后只对同一来源、同一规则的差异做归因。直接拿测试环境的全站爬取结果去比对线上,往往会因为域名、CDN、登录态、robots.txt 和发布进度不同,产生大量假差异。
对照之前要明确两件事。第一,链接来源是什么:是页面里的 <a href>、站点地图、日志中实际被访问的 URL,还是接口返回的跳转地址。第二,死链判定标准是什么:只看 HTTP 状态码,还是同时看跳转链长度、软 404、超时。两边口径不一致,结果就没有可比性。
最关键的一步是:把两边结果都归一化成“来源页面 + 目标 URL + 状态 + 判定时间”四列,再进入比对。少了来源页面,差异就无法定位到具体模板或组件。
测试环境通常有独立域名、基础认证或未完全同步的数据,线上则有 CDN 缓存和灰度发布。建议两边各自独立跑一次完整检测,不要用测试环境的爬虫直接跨域访问线上。
如果测试环境用了占位域名或示例路径,这些链接在线上本就不存在,属于环境差异,不应算作线上死链。
把两边结果对齐后,差异通常分四类,处理方式不同:
这里要区分“可能原因”和“已经定位的原因”。同一现象可能有多种解释,例如线上 404 既可能是文件未发布,也可能是大小写敏感导致,必须用单条 URL 复测确认,不能凭列表直接下结论。
死链会随内容更新、栏目调整和外部链接变化持续产生。建议在发布流程里加一道固定检查:上线前跑一次测试环境检测,上线后对变更页面涉及的链接做抽样复测。站点地图不保证收录,也不能替代死链检测,它只是链接发现渠道之一。
判断是否要长期保留某个跳转时,看它是否仍有外部引用或用户访问。没有依据的跳转可以清理,有依据的应保留并定期复核。
下一步:选一个近期改版的栏目,按“来源页面 + 目标 URL + 状态 + 判定时间”四列,分别采集测试环境和线上结果,先完成一次小范围对照,再决定是否扩大到全站。