唯一责任方应当是“最终输出可抓取网址清单的那一层”,而不是生成规则数量最多的一层。判断方法很直接:沿一条具体网址倒推,看它在进入站点地图或内链之前,最后一次被哪个系统改写。谁做了这次改写,谁就对这条网址的收录结果负责。若两个系统都能改写同一字段,就必须先确定优先级,否则收录优化会退化成互相等待。
串行条件下,各系统的输出有明确先后顺序,比如栏目系统先生成路径,再由路由层追加语言前缀,最后由站点地图模块读取。这时责任方是链路末端,因为它拿到的是已经定型的字符串。你只需要在末端加一道校验,就能发现前序系统留下的重复斜杠、大小写混用或参数残留。
并行条件下,多个系统各自向同一份网址池写入,比如商品系统写 /item/123,营销系统写 /item/123?from=channel,两者都可能进入内链或站点地图。此时没有天然末端,必须人为指定一个合并层作为唯一责任方。合并层的职责不是重新发明规则,而是决定哪条网址进入可抓取清单、哪条只作为跳转或参数变体存在。
选择依据不是系统重要性,而是“谁最接近对外可见的链接出口”。如果内链由模板渲染,模板读取哪个数据源,那个数据源就是责任方。若模板直接拼接字段,责任方就落在模板所依赖的字段提供方身上。
出现与直觉相反的结果时,先取一条真实存在的网址,记录它在四个位置的形态:数据库或内容接口返回的原始路径、路由解析后的路径、页面内链实际输出的路径、站点地图中出现的路径。四处一致,说明责任方已经收敛;不一致,差异出现的那一步就是责任方所在层。
常见的反常现象是:站点地图里网址数量正常,但抓取量下降。这不等于责任方已经处理正确。合理解释至少有三类:一是站点地图中的网址被 robots.txt 限制抓取,抓取限制并不等于索引移除;二是这些网址返回了跳转或错误状态,抓取工具放弃跟进;三是内链结构改变,导致同一批网址的发现路径变少。只有把站点地图、内链和响应状态分别核对,才能排除其他解释。
另一个反常现象是抓取量归零。它可能来自责任方修复了错误规则,也可能来自服务器临时拒绝、站点地图文件读取失败,或抓取预算被其他路径占用。单一指标归零不能证明处理正确,需要结合服务端日志和站点地图读取记录一起看。
具体动作分三步。第一步,选定合并层,并在配置中写明“只有该层可以写入对外网址清单”。其他系统只能提交候选网址,不能直接写入。第二步,为候选网址定义准入条件,例如必须返回成功状态、必须与规范路径一致、必须能被内链到达。第三步,在合并层输出一份对照记录,记录每条网址的来源系统和被接受或拒绝的原因。
这个动作的结果会直接影响下一步:如果对照记录显示大量网址因“与规范路径不一致”被拒绝,说明前序系统的规则需要调整,而不是继续放宽合并层。如果被拒绝的网址大多是参数变体,则可以把它们保留为跳转关系,不必进入抓取清单。若合并层自己也在改写路径,就要检查它是否引入了新的重复,此时责任方可能需要在合并层内部再细分。
当站点只有单一内容源、且路由规则不对外暴露时,可以不设独立合并层,直接把责任放在路由配置上。但只要出现多语言、多域名、多终端或营销参数中的任意一项,就应指定合并层。HTTPS 不保证网址规则正确,也不保证安全无漏洞或排名;它只是传输层条件,不能替代责任方判定。
不同搜索引擎对站点地图、参数处理和抓取限制的支持情况须分别核查,不能因为一个搜索引擎接受某种写法就假定全部接受。robots.txt 的抓取限制不等于可靠的索引移除,站点地图也不保证收录。责任方定义解决的是“谁改、谁验、谁回退”,不是收录承诺。
假设一个场景:内容系统生成 /news/2024/01/title,路由系统统一转为小写并去掉末尾斜杠。若合并层在路由之后读取,它拿到的就是小写无斜杠版本,责任方是合并层;若合并层在路由之前读取,它拿到的是原始大小写混合版本,责任方就变成路由层。两种条件下选择不同,判断标准始终是“最后一次改写发生在哪一层”。把这一层写进配置并留下对照记录,后续的收录优化才有稳定的起点。