先给结论:当发布后死链配置被改回旧值,优先怀疑“发布链路里存在第二份配置源”,而不是检测脚本本身出错。要追踪来源,应把“谁在什么时刻写了什么值”变成可核对的证据链,而不是反复重跑死链检测。下面用一个假设情境说明决策过程。
假设某站点在发布系统中维护一份死链重定向规则,规则文件由发布流水线在每次上线时写入服务器。某次上线后,死链检测报告显示一批旧的失效路径重新返回 404,而本地仓库里这些规则仍然存在。直觉会认为是检测工具漏报或缓存问题,但更可能的情况是:发布时写入的规则被另一份更早的配置覆盖,或者发布顺序让旧配置后写入。
这个假设的关键在于:检测结果只是“结果层”,它无法告诉你配置为何回到旧值。要区分“检测错”和“配置被覆盖”,必须去看写入动作的先后与来源。
不要只看死链数量是否归零或升高,这类统计变化有多种合理解释。可以按下面三类证据分别核对:
如果文件修改时间早于发布、但内容仍是旧值,则更可能是发布流程根本没有写入目标文件,而不是被覆盖。这两种解释的动作方向完全不同:前者要查写入者,后者要查发布是否命中了正确路径。
在发布脚本写入配置的那一步,追加一条记录:写入时间、写入来源、目标路径、内容哈希。这个动作本身不修复问题,但它把“谁最后写了这个文件”变成可查的事实。
执行后会产生两种结果,并直接影响下一步:
这里要说明适用条件:该方法要求发布脚本可修改,且写入动作集中在一处。如果配置由多人手工在服务器上直接编辑,时间戳记录只能覆盖脚本写入的部分,仍需结合操作审计。
按下面的顺序推进,可以避免在错误层反复消耗时间:
把死链检测放在最后,是因为它回答的是“现在有哪些死链”,而不是“配置为什么变回去”。当配置来源未定时,检测结果只反映当下状态,不能作为覆盖原因的证明。
有些现象看起来像覆盖,实际是别的原因。例如:robots.txt 的抓取限制不等于可靠的索引移除;站点地图不保证收录;HTTPS 不保证安全无漏洞或排名。这些边界与配置覆盖无关,不应混入排查结论。
另外,不同搜索引擎对同一配置的支持情况须分别核查,不能因为一个来源的表现就推断所有来源一致。若检测范围只覆盖部分路径,死链数量下降也不能单独证明覆盖问题已解决。
追踪来源的目标不是让检测数字好看,而是让每一次配置写入都有可追溯的记录。只有写入来源明确后,后续的修复动作才有稳定前提。