唯一责任方应当定义为“最终写入线上 robots.txt 或 sitemap 文件的那一个系统”,而不是“最早生成规则的系统”。判断依据是可核对的线上文件内容和部署记录:谁拥有该文件的写权限、谁在发布流水线中最后落盘,谁就对规则冲突负责。其余系统即使也在生成网址规则,只能作为上游建议者,不能直接写入生产环境。
多个系统同时输出网址规则,通常来自三种组合:CMS 自动生成 sitemap、独立 SEO 工具推送 sitemap、运维或安全系统写入 robots.txt 规则。它们各自认为自己在“提交收录”,但线上只有一个最终文件。此时不要先讨论哪个系统更专业,而要先看冲突发生在哪一层。
保留、改写还是退出,取决于冲突是否已经影响线上文件。若线上文件仍可核对且只有一处写入路径,可以保留现有责任方并改写上游规则格式;若线上文件被多方交替覆盖,退出自动写入是更安全的前提。
直觉上容易把“收录提交后没有出现”全部归因于规则冲突,但两者需要分开验证。可核对的证据包括:线上 robots.txt 的实际内容、sitemap 文件的实际网址列表、服务器访问日志中对应爬虫的请求记录,以及页面本身返回的状态码。
如果 robots.txt 中某条规则屏蔽了目标目录,而 sitemap 又提交了该目录下的网址,这属于规则冲突,责任方就是最后写入 robots.txt 的系统。反过来,如果 robots.txt 允许抓取、sitemap 也包含网址,但日志中没有对应请求,则可能是提交入口未被处理、抓取预算分配在其他路径,或页面返回了非 200 状态。此时把责任推给“生成网址规则的系统”并不能解决问题。
需要特别说明:robots.txt 的抓取限制不等于可靠的索引移除。即使规则写对了,已经抓取过的页面仍可能以其他方式出现在结果中。sitemap 也不保证收录,它只是提交候选网址。不同搜索引擎对同一规则的支持情况须分别核查,不能拿一个引擎的表现推断另一个。
假设某站点由 CMS 在发布内容时生成一份 sitemap,同时运维脚本每天从数据库导出另一份 sitemap 并覆盖同一路径。两份文件的网址集合不同,线上文件每天在两者之间切换。此时唯一责任方应定为“拥有该路径写权限并最后落盘的系统”,也就是运维脚本;CMS 的生成逻辑改为输出到独立路径,供人工比对。
动作与结果:先停止运维脚本的自动覆盖,改为只生成到 /tmp/sitemap-candidate.xml,再对比线上文件与候选文件的差异。如果差异集中在已删除页面,说明 CMS 侧更接近真实状态,下一步把写入权限交回 CMS;如果差异集中在新增页面,说明导出脚本更完整,下一步让 CMS 只负责触发、不直接写线上文件。这个动作的结果直接决定责任方是否转移,而不是先假定某一方正确。
如果这三件事无法同时满足,退出自动写入、改为人工审核后发布,是比继续让多个系统竞争写入更可控的选择。责任方不是永久不变的,但每一次转移都应当有明确依据,而不是因为某个系统“看起来更懂 SEO”。
最后要记住,收录提交只是候选网址的传递动作,它不能替代对线上文件、抓取日志和页面状态的核对。定义唯一责任方的目的,是让每一次规则变化都能被解释和回溯,而不是保证某个网址一定被收录。