唯一责任方应是“输出最终可抓取网址清单的那一层”,而不是生成链接或提交外链的那一层。判断依据是:谁能决定某个网址最终以什么形式出现在页面、站点地图或跳转链中,谁就对收录结果负责。下面用一个假设情境说明如何界定。
假设某站点有三层:CMS 输出文章页链接,CDN 做参数清理和大小写归一,外链投放系统给落地页追加跟踪参数。某天发现一批外链落地页未被收录,而同一批页面在站内搜索能打开。三套系统都声称自己“按规则生成了网址”,此时若把责任分摊给三方,问题会反复出现。正确做法是先确定哪一层的输出才是爬虫实际看到的网址。
不要凭“抓取量下降”或“提交后无反应”下结论,这两种现象都有多种合理解释。可以按以下顺序取证:
如果三者一致但仍未收录,问题可能不在网址规则,而在内容质量或站点整体信任度,此时不应继续在责任方划分上消耗时间。
可以用一条规则收口:谁最后写入对外可见的网址,谁就是唯一责任方。具体落地为:
这个动作的直接结果是:当再次出现收录异常时,只需检查责任方的输出是否变化,排查范围从三套系统缩小到一层。
第一,把规范网址清单固定为唯一事实来源,站点地图、内链、外链投放都从它读取,而不是各自生成。站点地图不保证收录,但一致的清单能让排查有基准。第二,给责任方设定变更记录:任何影响 URL 形态的规则调整都要留痕,否则下次异常时无法判断是哪次改动引入的。
如果责任方是 CDN 或网关层,需要确认它是否对参数顺序、大小写、编码做了隐式归一;这类归一往往不会出现在 CMS 配置里,却直接改变爬虫看到的网址。若责任方是外链投放系统,则要确认它是否允许追加跟踪参数,以及这些参数是否被服务端正确忽略。
假设外链目标为 /p/ABC,CDN 将其归一为 /p/abc,CMS 内部链接却写成 /p/abc?from=nav。爬虫分别请求了三个形态。此时若把责任方定为 CMS,CDN 的归一规则仍会继续制造差异;若定为 CDN,CMS 的参数拼接又不受控。按“最后写入对外可见网址”的规则,责任方是 CDN,因为它决定了最终对外形态;CMS 必须改为输出归一后的形式。执行这一改动后,再次核对日志,若请求形态收敛为一种,说明责任划分生效;若仍分散,则说明还有未识别的改写环节,需要回到第一步重新列链。