唯一责任方应当是“最终产出 robots.txt 文件的那一个系统或流程”,而不是任何声称自己负责规则的系统。只要有两个以上系统都能写同一份文件,就必须指定一个生成入口、一个发布动作和一个回滚负责人,其余系统一律降级为输入方。判断是否已经做到这一点,可以看一个硬指标:线上文件里的每一行,能否追溯到唯一一条输入记录和唯一一次发布操作。
常见的矛盾现象是:团队里每个系统都“只是负责自己那部分”,但线上 robots.txt 出现了彼此矛盾的 Disallow 与 Allow,甚至出现上一版早已删除的路径。直觉上会认为有人偷偷改了文件,但更常见的情况是没有任何一次改动是恶意的,问题出在生成顺序和覆盖关系上。
这里有两个都成立、但结论相反的解释:
这两种解释对应的修复方向完全不同:前者要收敛发布权,后者要收敛语义审核权。分不清是哪一种,就会把问题修在错误的地方。
不要靠询问“谁改的”来定位,靠文件本身和发布记录来区分。
一个假设的例子:假设 A 系统生成 Disallow: /search,B 系统生成 Allow: /search/help。若线上只剩前者,是覆盖;若两行都在且顺序颠倒导致结果变化,是拼接。这个例子只用来说明比较方法,不代表任何真实项目结果。
需要提醒的是,抓取量或请求量归零并不能单独证明某次改动正确。它还可能来自流量本身下降、路径本来就没有被抓取、或抓取预算被其他因素改变。把这类统计当作唯一证据,容易得出错误结论。
“唯一责任方”不是一个人名,而是三个位置各自唯一:
具体动作上,可以先冻结其他系统的写权限,只保留一个生成入口,然后重新发布一次并记录文件指纹。这个动作的结果会直接决定下一步:如果矛盾消失,说明此前是覆盖或拼接导致,接下来要做的是维持单一入口;如果矛盾仍在,说明输入层本身就有冲突规则,需要回到各系统的输入定义去核对,而不是继续调整发布顺序。
同时要注意,robots.txt 的抓取限制不等于可靠的索引移除。即使规则写对,已经索引的网址也可能继续出现,这部分要走各自搜索引擎提供的移除渠道,并且不同搜索引擎的支持情况需要分别核查。站点地图也不保证收录,它和 robots.txt 是两件事,不要用前者弥补后者的问题。
单一责任方解决的是“谁写文件”,不解决“规则是否该这么写”。因此还需要保留两类边界:
如果站点同时使用 HTTPS,也不要把它当作 robots.txt 问题的解释。HTTPS 不保证安全无漏洞,也不保证排名,它和抓取规则是相互独立的两件事,混在一起讨论只会让责任划分更模糊。
最后可以用一句话检验责任方是否真的唯一:随便挑线上文件的一行,问“这行是谁写的、什么时候发布的、出问题谁回滚”。三个问题只有一个答案,责任方才算定义完成;只要有一个问题出现两个答案,就说明还有系统在绕过唯一入口,需要继续收敛。