唯一责任方应当定义为对“最终生效规则”负责的那个系统,而不是生成规则数量最多的系统。判断依据是规则写入目标的权威性:如果多个系统都能直接改写同一份 robots.txt 或同一层网关配置,就必须先确定哪个系统拥有最终写入权;如果各系统只生成片段、由发布层合并,则责任方是发布层。前提变化会直接改变结论:当规则从“单点写入”变为“多方写入”时,责任方必须从内容系统转移到配置发布系统,否则冲突无法收敛。
当 CMS、商品中台、路由网关都能直接追加 Disallow 或 Allow 行时,冲突的根源不是规则本身写得对不对,而是没有唯一写入者。此时定义责任方的动作是:列出所有能写入该文件的系统,确认哪个系统持有部署凭证或配置中心的主写权限。
选择依据是“谁能覆盖谁”。如果 A 系统后写会覆盖 B 系统,那么 A 就是事实责任方,无论 B 的业务方是否更懂抓取需求。实施动作是把其他系统的写入通道降级为提交申请,由责任方统一落盘。结果会直接影响下一步:一旦出现误拦截,排查范围从“所有系统”缩小到责任方的发布记录,回滚也只需针对一处。
例外是紧急封禁场景。若线上正在被异常抓取压垮,允许临时由网关直接写入,但必须同时记录写入者与时间,并在事后把规则归并回责任方。否则临时规则会变成无人认领的孤儿行。
另一种常见结构是各系统只输出规则片段,由发布层拼接成最终文件。这时责任方不是任何业务系统,而是维护合并逻辑的团队。因为冲突规则如何排序、重复行如何去重、冲突时谁优先,全部由合并逻辑决定。
选择依据是“谁定义优先级”。假设内容系统提交 Disallow: /search,营销系统提交 Allow: /search/promo,最终生效结果取决于合并层是后写优先还是最长匹配优先。维护合并逻辑的一方才是唯一责任方。
实施动作是要求合并层输出可追溯的产物:每条最终规则附带来源系统标识,并保留合并前后的差异记录。这样当抓取异常发生时,可以先看是哪条来源规则被合并成了最终行,而不是逐系统猜测。
不必靠开会争论,用下面几个可观察信号就能区分:
需要提醒的是,抓取限制类规则并不等于可靠的索引移除手段,站点地图也不保证收录。因此不能用“提交了规则就该有对应结果”来反推责任方是否正确,只能用它来判断规则是否被正确写入和合并。
假设某站点有三个系统:内容系统、活动系统、边缘网关。变化前只有内容系统能写 robots.txt,责任清晰。变化后活动系统也获得了写入权限,用于临时屏蔽活动页。某天 /search 被意外拦截,抓取量下降。
此时若按“谁生成规则谁负责”,会先查活动系统;但实际证据是网关的写入时间晚于活动系统,覆盖了原有 Allow。结论是责任方应定义为网关,因为它是最后写入者。下一步动作是收回活动系统的直接写入权,改为向网关提交申请。结果是把责任方从三个系统收敛为一个,后续同类问题只需查网关的发布记录。
如果站点改为发布层合并模式,同样的例子结论会不同:责任方变为合并逻辑维护者,活动系统只是规则来源之一。两种条件成立与否,取决于是否存在单一最终写入点,而不是取决于哪个系统更常改动规则。
责任方确定后,还需要两个配套动作才算真正落地。第一,为该责任方建立唯一的规则变更入口,其他系统只能提交不能直写。第二,要求每次变更记录来源、时间和最终生效行,便于区分是规则未生效还是规则本身不合适。
当规则数量或来源系统继续增加时,可以定期复核责任方是否仍然匹配当前结构。如果出现新的直接写入通道,责任方定义就要重新评估,而不是沿用旧结论。