核心做法是:在域名注册服务这一层只保留“域名与主机名归属”的责任,把网址路径、参数和末尾斜杠的生成权收归一个系统。多个系统如果同时输出可访问的网址,冲突不会体现在域名本身,而会体现在同一主机名下的路径与参数上,最终让搜索端看到重复或互斥的规则。你要做的是指定一个系统为网址规则的唯一来源,其余系统只消费、不生成。
域名注册服务负责的是注册、续费和 DNS 解析指向,它通常不决定 /product/1 和 /product?id=1 哪个该被使用。如果两个系统都从同一台服务器输出页面,问题往往不在域名注册,而在应用路由、CDN 回源规则或站点地图生成器各自拼了一套网址。
可区分的证据是:同一主机名下出现两种路径形态,而 DNS 解析记录只有一条。此时把责任推给域名注册服务不会解决任何问题,因为域名解析本身没有产生路径。反过来,如果同一内容出现在两个不同主机名上,例如带 www 与不带 www 同时可访问,那才需要回到域名注册服务与 DNS 配置层确认哪个主机名是主用名。
假设一个站点同时有内容管理系统、电商模块和站点地图生成器。三者都能输出商品页网址,且各自带不同的参数顺序。合理的选择是让内容管理系统作为唯一生成方,电商模块只提供数据,站点地图生成器只读取内容管理系统给出的规范网址。
这个动作的结果是:站点地图里出现的网址与页面内链接一致,搜索端抓取时不会因为参数顺序不同而把同一商品当成两个页面。代价是电商模块不能再自行拼接链接,需要一次改造把它的输出改为引用统一字段。如果改造周期长,可以先让站点地图生成器停止自行拼接,只输出已有规范链接,减少新增冲突。
只有当两套网址规则服务的是明确不同的用户群,并且彼此不产生可访问的重叠时,才可以保留两个生成方。例如一个系统只生成面向站内搜索的临时筛选链接,另一个系统只生成面向外部引用的稳定详情页链接,且筛选链接不被站点地图收录、不被页面主导航引用。
这种保留的前提是你能持续证明两者没有交集。一旦筛选链接被复制到外部或被搜索端抓取,冲突就会重新出现。因此保留两个生成方需要额外的监控动作:定期抽查站点地图和页面链接中是否混入了非规范形态。如果无法维持这个监控,退回单一生成方更省事。
当旧网址规则已经产生大量外部引用,且改造成本高于继续维护时,可以选择退出新规则,而不是强行统一到新生成方。判断依据不是旧网址数量本身,而是这些旧网址是否仍带来有效访问、是否仍被外部页面引用。
假设旧规则是带参数的动态网址,新规则是静态路径。如果外部引用主要集中在少数几个旧网址上,可以用一次性的跳转把它们指向新网址,然后退出旧规则。如果旧网址分散且持续产生访问,强行退出会造成大量失效入口,此时应保留旧规则作为兼容层,但把它降级为只读,不再由它生成新的链接。这个动作的结果是新增内容只走新规则,旧规则不再扩散。
定义唯一责任方不能只停留在口头约定。需要在配置层面留下可检查的痕迹:规范网址由哪个系统写入、站点地图由哪个系统生成、跳转规则由哪个系统维护。三者的责任方可以是同一个系统,也可以是不同系统,但每个输出只能有一个来源。
检查时,抓取一个页面,看它的规范链接、页面内链接和站点地图中的对应条目是否指向同一个网址。如果三者不一致,说明至少有两个系统在生成网址。此时不要先改域名注册服务,而要先定位哪个系统写入了不一致的那一项。定位清楚后再决定是改写它的输出,还是让它退出生成环节。
需要提醒的是,robots.txt 的抓取限制不等于可靠的索引移除,站点地图也不保证收录。即使你统一了网址生成方,搜索端仍可能因为其他原因保留旧网址的索引。因此唯一责任方解决的是内部规则冲突,不是索引状态的直接控制手段。把这两件事分开,才不会在统一规则后又因为索引未更新而误判责任方没有生效。