结论先给:只有当所有生成网址规则的系统都能被同一份“规则归属表”覆盖,并且每个外链收录工具只消费其中一条规则时,才适合指定唯一责任方;否则应把责任拆成“规则生成者”和“工具执行者”两级。下面先说明这个条件为什么成立,再指出一个会让它失效的反例,最后给出可以立即执行的动作。
多个系统同时生成网址规则,通常来自 CMS、商品库、多语言模块、分页组件或历史重定向脚本。它们各自输出 URL 形态,外链收录工具只是下游消费者。要让唯一责任方成立,先做一件事:把当前所有会产出网址的模块列成清单,并标记每个模块的输出是“静态配置”还是“运行时拼接”。
如果清单里每一项都能对应到唯一的配置文件或代码入口,那么可以把规则仲裁权交给其中一个系统,例如由路由层统一生成最终 URL,其他系统只提交参数。此时外链收录工具拿到的是同一份规则,责任方就是路由层。这个结论成立的关键不是“谁级别高”,而是“规则是否可枚举、可回溯”。
假设一个站点同时存在两套规则:新系统按 /category/{id}/page/{n} 生成分页,旧系统仍按 /category/{id}?page={n} 输出外链。此时即使指定新系统为唯一责任方,旧系统产生的链接仍会进入外链收录工具。工具无法自行判断哪条规则代表当前意图,只会把两条都当作候选。
这种情况下,唯一责任方是名义上的,实际执行会被旧规则绕过。反例成立的条件是:历史规则仍在被引用,或者动态拼接发生在工具抓取之前。只要满足其中一条,就不应继续坚持单一责任方,而应改为“规则冻结 + 双人复核”:先冻结旧规则输出,再由新系统统一重写。
规则归属表不需要复杂工具,一张表即可。每行包含:规则来源、URL 模板、生效范围、是否允许进入外链收录工具、负责人。示例如下(假设场景,仅说明比较方法):
/category/{id}/page/{n},允许进入工具,负责人 A。/category/{id}?page={n},禁止进入工具,负责人 B。/{lang}/category/{id},允许进入工具,负责人 C。填完表后,让外链收录工具只读取“允许进入”的行。若工具不支持按来源过滤,就在生成阶段先剔除禁止项,再交给工具。这样责任方不再是抽象的系统名,而是表里每一行的负责人。
立即执行的动作是:暂停旧规则向外输出新链接,保留已有链接但不再新增;然后从外链收录工具中抽取最近一批 URL,按规则归属表逐条比对。如果发现禁止项仍在新增,说明冻结不彻底,需要回到生成端排查,而不是调整工具参数。
验证结果会直接影响下一步:若禁止项不再新增,可以把唯一责任方正式落到路由层;若仍有新增,则维持两级责任,直到旧规则被完全替换。注意,robots.txt 的抓取限制不等于可靠的索引移除,站点地图也不保证收录,因此验证时要看工具实际消费的 URL 列表,而不是只看抓取日志是否归零。抓取量归零可能只是因为工具暂停,不能单独证明规则已经清理干净。
最后,如果站点同时依赖搜索引擎、平台推荐和广告落地页,上述规则归属表应分别核查,因为不同渠道对 URL 形态的容忍度不同;但责任方的定义方法是一致的:先让规则可枚举,再让工具只消费允许项,最后用新增链接是否停止来判断处理是否生效。