当CMS、路由框架、CDN或反向代理各自都能改写网址时,同一批URL常出现互相矛盾的版本:日志里是带斜杠的,站点地图里是不带的,页面里又冒出第三种。要解决它,不必先争论哪套规则更“正确”,而是把唯一责任方定义在“最终输出给爬虫的那一层”,其余系统只允许做不改语义的透传。唯一责任方一旦确定,其他系统的规则就必须以它的输出为输入,而不是各自再生成一套。
典型表现是:站内链接、站点地图、canonical标签和服务器重定向指向的URL不完全一致,导致抓取预算被分散到多个变体上。这时通常有两种解释。
两种解释都会造成同样的表面现象,但修复路径完全不同:A需要先定责任方再改流程,B只需要修一处规则。
要判断属于哪一种,可以收集三类可验证的证据。
这里要提醒一点:抓取量或请求量的下降本身不能证明责任方已经定对。它同样可能来自robots.txt限制、站点地图未更新或抓取调度波动。robots.txt的抓取限制不等于可靠的索引移除,站点地图也不保证收录,因此不要把这类信号当作责任划分的依据。
可操作的做法是:选定“向爬虫返回最终HTML和重定向”的那一层作为唯一责任方,通常是应用层或紧邻它的反向代理,而不是CDN缓存规则或前端路由。定义之后,其他系统只做透传。
具体动作分三步:
这个动作的结果会直接影响下一步:如果改完之后各来源形态开始收敛,说明责任划分生效,可以进入规则细化;如果仍然发散,说明还有一层在偷偷生成网址,需要继续往下排查。
假设某站点有前端路由、应用服务器和CDN三层。前端路由把/product/123输出为/product/123/,应用服务器把大写路径转小写,CDN又把带查询参数的请求去掉参数。三者叠加后,同一个商品页可能出现四种URL形态。
若指定应用服务器为唯一责任方,则前端路由和CDN都改为透传,只有应用服务器决定末尾斜杠、大小写和参数处理。收敛后,站点地图与canonical都引用应用服务器输出的形态,抓取到的变体数量会下降——但注意,这只是假设中的比较方法,不代表任何真实站点的实际结果,也不构成收录或排名承诺。
唯一责任方解决的是“谁生成网址”,不解决“搜索引擎是否接受”。不同搜索引擎对重定向、参数处理和canonical的支持情况须分别核查,不能因为一套规则在某个引擎下表现正常就推广到全部。另外,HTTPS并不保证站点安全无漏洞,也不保证排名;它只是责任方在归一协议时需要考虑的一个维度,而不是责任划分的终点。把这些边界分清,责任方的定义才不会被无关因素干扰。