唯一责任方应当是“最终发布 URL 清单的系统”,而不是最早生成候选网址的系统。判断依据只有一条:谁在 URL 进入可抓取状态前拥有最后写入权,并对写入结果负责。若站点地图、CMS 和路由层都能生成网址,就必须把其中一方设为发布责任方,其余系统只提供候选或校验,不得直接对外暴露 URL。
多个系统同时生成网址规则,常见于 CMS 输出栏目页、路由服务拼接参数页、站点地图工具再汇总一遍。三者都能产出看似合法的 URL,但只有真正返回 200 状态并允许百度蜘蛛抓取的那一份,才算最终发布。
选择责任方时,先看两个条件:
两种做法都成立,但代价不同。交给路由层,改动集中、发布快,代价是 CMS 编辑无法预知最终 URL,容易在内容侧重复配置;交给 CMS,内容与 URL 对应清晰,代价是路由层必须放弃自主拼接,遇到历史参数页时要做兼容映射。
具体动作是:选一条新内容,从创建到可被抓取,记录每个系统中 URL 第一次出现的顺序和最后被修改的位置。最后修改 URL 的那个系统就是发布责任方。
这个动作的结果会直接影响下一步:
假设某站有 500 条内容,CMS 生成 /article/123,路由层生成 /article/123?from=list,站点地图同时收录两者。此时若把责任方定为路由层,就必须由路由层明确哪些参数进入正式 URL,哪些只用于站内跳转;站点地图只接收正式清单。这个假设只用于说明比较方法,不代表任何真实站点数据。
唯一责任方不是名义上的,而要落到三处约束:
这里有一个容易忽略的例外:如果站点已经存在大量历史 URL,且这些 URL 有外部链接或稳定流量,责任方不能直接按新规则全部替换。此时应把历史 URL 视为已发布清单的一部分,由责任方决定保留、映射还是弃用。robots.txt 的抓取限制不等于可靠的索引移除,站点地图也不保证收录,所以不能用“先屏蔽再提交新清单”代替责任归属。
当两个系统同时声称自己生成的是正式 URL,按以下顺序裁决:
如果三步仍无法区分,就由站点负责人指定一方为唯一责任方,并让另一方在下一个发布周期内停止写 URL。这个动作的结果是:后续百度蜘蛛抓到的 URL 只会来自一个来源,排查抓取异常时不必再在多个生成器之间来回比对。
责任方不是永久不变。出现以下情况时应重新评估:内容主数据迁移到新系统、路由规则从静态改为动态、站点从单域拆成多域。重新评估时仍用同一条标准:谁拥有最终写入权,谁对百度蜘蛛可见的 URL 负责。HTTPS 不保证安全无漏洞或排名,因此不能因为协议切换就把发布责任顺手交给证书或网关系统;发布责任只跟 URL 写入权有关。
把责任方写进发布流程,并让其他系统只提交候选,是避免多系统生成网址规则互相覆盖的最小代价做法。