当CMS、路由框架、CDN或重写插件同时产出URL规则时,唯一责任方应当是“最终把请求映射到响应状态”的那一层,而不是生成链接最多的那一层。判断依据不是谁写了规则,而是谁能在日志里被证明对某个具体URL的404或200负责。若无法从访问日志、响应头和规则命中记录中锁定单一层,任何死链检测结论都只能算暂定。
多系统并存时,常见直觉是“谁生成的链接多,谁就该负责”。这个判断在一种情况下成立:生成层同时拥有改写和返回状态的能力,例如同一应用既输出菜单链接又处理路由。但更常见的是生成与响应分离——模板输出路径,路由框架决定是否匹配,CDN或反向代理决定是否回源。此时链接来源只是线索,不是责任证据。
可核对的证据顺序如下:
如果停用某层后状态码从404变为200,该层就是该URL的直接责任方。如果状态码不变,它只是生成了链接,不承担响应责任。
把责任方定义清楚,目的是让修复动作有明确归属。一个可操作的判定是:谁修改规则后能直接改变该URL的响应状态,谁就是唯一责任方。这一定义排除了“链接出现在页面里”的生成层,除非它同时参与响应。
假设一个站点有三层:CMS输出文章路径,前端路由做客户端跳转,CDN配置重写规则。某文章URL返回404。若访问日志显示请求到达CDN后未回源,且CDN重写规则中没有匹配该路径,那么责任方是CDN规则维护者,而不是CMS编辑。下一步动作是让CDN维护者补充或修正规则,然后重新请求同一URL验证状态码。若请求到达应用层才返回404,责任方转为路由或应用配置。
这个动作的结果会直接影响下一步:责任方修正后,如果状态码变为200且重定向链稳定,才进入批量死链检测;如果仍为404,说明还有第二层在拦截,需要继续按响应链向上排查。
上述结论在一种情况下会失效:生成层和响应层由同一系统控制,且该系统对URL的最终状态有绝对决定权。例如静态站点生成器同时输出页面文件和服务器路由配置,没有额外CDN重写。此时生成层就是响应层,责任方自然落在它身上。反过来说,如果存在任何一层能在请求到达生成层之前改写、拦截或缓存响应,生成层就不再是唯一责任方。
识别这个反例的证据是:停用生成层后,URL状态仍由其他层决定。只要出现这种情况,就不能把责任简单归给生成链接的系统。
死链检测工具给出的404列表、抓取量变化或请求量归零,都不能单独证明某一层是责任方。请求量归零还可能来自抓取频率下降、日志采样、 robots.txt 限制或工具自身未覆盖该路径。站点地图中列出某URL也不保证它会被抓取或收录。因此,检测结果的作用是提供候选URL,而不是直接判定责任。
把检测结果与响应链证据结合,才能形成可复查的判断。例如工具报告某路径404,同时日志显示该请求在CDN层被重写为另一个路径,那么责任在CDN规则;若日志显示请求到达应用层且路由未匹配,责任在应用路由。
在多个系统同时生成URL规则的环境里,不要先批量修复所有疑似死链。先选一个具体URL,按响应链锁定唯一责任方,完成一次修复并验证状态码变化。只有这次验证通过后,才把同一责任方涉及的规则范围作为下一轮死链检测的边界。这样做的结果是:检测范围从“全站所有404”缩小为“某一层规则覆盖的URL”,修复动作和验证证据都能对应到具体责任方,避免多个系统互相推诿。