结论先说:不要按“哪个系统先输出网址”来定责任方,而要按“哪个系统持有该网址的最终发布决定权”来定。若多个系统都能改写、拼接、重定向或过滤网址,唯一责任方应是那个有权决定该网址是否对百度可见、以什么状态可见的系统。其他系统只能提交候选网址,不能直接决定最终输出。
多个系统同时生成网址时,常见组合包括内容系统、路由或网关、CDN、重定向中间件、站点地图生成器、链接组件。它们都可能“产生”一个网址,但产生不等于负责。判断责任方,先看两个条件。
条件一:网址进入百度可见范围前,是否必须经过某个系统的最终裁决。如果所有输出都要经过统一路由层,由路由层决定保留、改写、重定向或返回 404,那么路由层是唯一责任方。内容系统即使生成了旧网址,也只是候选来源。
条件二:是否存在多个系统都能直接向百度暴露网址。如果内容系统能直接输出页面,站点地图生成器又能独立写入另一套网址,且两者都不经过同一裁决点,那么责任方不能只定一个系统,而要先建立唯一裁决点。此时“唯一责任方”不是从现有系统里挑一个,而是指定一个系统作为最终发布闸门。
选择依据可以压缩成一句:谁能让一个网址对百度变为可抓取、可索引状态,谁就是责任方。若当前没有这样的系统,先补裁决点,再谈责任归属。
不要先改代码。先做一次网址状态对照,把每个可疑网址的“生成来源、最终响应、是否被百度可见路径引用”三列写清楚。动作如下:
这个动作的结果会直接决定下一步:如果所有异常网址都经过同一路由层,责任方明确,修复应落在该层的规则;如果异常网址绕过路由层直接暴露,下一步不是修规则,而是先关闭旁路输出,再指定裁决点。
责任方不能只写“由某系统负责”,而要写成可检查的规则。例如:
这些规则的作用是让“唯一责任方”可验证。若某条规则被绕过,责任方仍然是路由层,但问题性质变成旁路暴露,而不是规则本身错误。此时修复顺序应是先封旁路,再改规则。
假设内容系统生成 /article/123,网关把它改写成 /a/123,站点地图生成器又按旧模板写入 /article/123?from=sitemap。百度抓取后可能看到多个最终 URL。若网关是唯一裁决点,正确做法是让网关把 /article/123 和带参数版本都 301 到 /a/123,站点地图只输出 /a/123。若网关没有裁决权,三个系统都能直接暴露网址,那么先指定网关为裁决点,再让另外两个系统只提交候选。这个例子里,责任方不是“生成网址最多的系统”,而是“有权决定最终可见 URL 的系统”。
有些团队会用 robots.txt 限制抓取,或把站点地图当作收录保证,以此把责任推给百度或推给站点地图生成器。这两者都不成立。抓取限制不等于可靠的索引移除;站点地图不保证收录。它们只能影响百度发现和抓取候选网址,不能替代最终裁决。若责任方把“已写进站点地图”当作完成标志,异常网址仍可能通过内链或历史链接暴露。
另一个例外是 HTTPS。启用 HTTPS 不保证安全无漏洞,也不保证排名。它不能作为责任方判定依据。若多个系统分别输出 HTTP 和 HTTPS 版本,责任方仍是决定最终协议和最终 URL 的那个系统。
因此,当常规做法都试过仍未解决时,集中检查一个遗漏条件:是否存在绕过唯一裁决点的输出路径。只要旁路还在,任何单点修复都会被另一个系统重新生成。先把裁决点定死,再让其他系统只提交候选,百度最新收录中看到的网址才会收敛到同一套最终 URL。