先给结论:配置被覆盖回旧值,通常不是抓取规则本身被搜索引擎改动,而是发布链路里某个更晚执行的层把文件重新写了回去。要追踪来源,不能只看线上最终文件,而要在“生成—发布—生效”之间插入可对比的中间快照,并记录每次写入的版本标记。只有拿到覆盖前后的两份内容与写入顺序,才能判断是发布系统重放旧版本,还是缓存或回滚机制造成的假象。
现象往往相同:线上 robots.txt 或规则文件的内容变回几天前的样子,抓取行为随之变化。但背后可能是两件事。
两种解释对应的动作完全不同,所以第一步不是急着改配置,而是先确认“被覆盖”发生在写入端还是读取端。
要区分它们,需要三类可对比证据,且必须带时间戳。
这些现象单独出现都不能定论。比如抓取量下降,既可能是规则被改回旧值,也可能是抓取方自身调度变化;只有和内容对比结合,才能作为判断依据。
假设某站点在发布产物里写入 # build:2024-06-a17 这样的注释。某天运维发现线上规则变回 # build:2024-05-b03,即标记倒退。此时可以推断:不是缓存读旧,因为缓存通常不会改变注释内容;而是某次部署实际使用了旧产物。下一步动作是检查发布流水线中“拉取产物”这一步是否指向了固定标签而非最新提交,修正后重新发布,并再次比对标记是否前进。这个动作的结果直接决定后续:若标记前进且边缘同步,问题收敛;若标记前进但边缘仍旧,则还要处理缓存刷新。
反过来,如果标记没变而内容回退,就不该去改发布脚本,而应先核对各边缘节点的副本版本,并检查是否有独立的同步任务在覆盖。
要让下次覆盖可追踪,可以在发布流程里固定两个动作。第一,每次发布后自动抓取一次线上文件并保存快照,与本次构建产物做逐字节对比。第二,把构建标记写进文件本身,而不是只存在发布日志里。这样覆盖发生时,快照和标记能直接指出是哪个环节写回了旧值。
需要提醒的是,robots.txt 的抓取限制不等于可靠的索引移除,站点地图也不保证收录;这些规则文件被覆盖后,抓取行为的变化只能说明抓取端读到了不同内容,不能直接推断索引状态。因此追踪来源时应聚焦“谁写了文件、谁读了文件”,而不是把抓取量变化当作唯一判据。
当写入端与读取端的证据都齐备后,再决定是修发布逻辑还是刷缓存,才不会在错误的环节反复改动。