唯一责任方应当落在“最终写入提交入口的那一层”,而不是生成网址的任意上游系统。做法是:让所有上游系统只负责产出候选网址,由提交层统一去重、校验并记录来源;提交层对进入站点地图、抓取指令或提交接口的最终清单负责。这样做的直接结果是,当个别样本正常而规模化后出现例外时,你能沿着一条链路追到具体系统,而不是在多个生成器之间互相推责。
常见情形是:手工挑几条网址测试,提交、抓取、收录表现都正常;一旦把某个系统批量生成的网址全量送进提交工具,就开始出现重复条目、参数变体、已删除页面被再次提交,或者同一内容出现多个可访问地址。此时最容易得到的结论是“提交工具坏了”,但这个结论通常站不住脚。
更合理的判断是:规模放大后,上游系统之间原本被样本量掩盖的规则差异被暴露出来。单个系统生成的规则可能自洽,但两个系统各自生成一套网址时,边界条件(大小写、结尾斜杠、跟踪参数、分页、筛选参数)会互相叠加,最终清单里就出现了单独测试时看不到的形态。
面对上述例外,可以先把原因收敛到两种解释,再去找证据区分。
两种解释对应的修复动作完全不同:前者要改上游生成规则或指定唯一生成方,后者只需在提交层加归一逻辑。分不清就会改错地方。
可以取同一批网址,分别从每个上游系统单独导出,再与合并后的清单对比。关键看三点:
一个假设例子:假设内容系统按标题别名生成地址,商品系统按ID生成地址,两者对同一商品页各产出一条。单独导出时各只有一条,合并后变成两条。这组证据指向解释一——需要指定其中一个系统为唯一生成方,或由提交层按规范地址做映射。若合并后还多出带跟踪参数的第三条,且该参数来自提交层未剥离,则同时存在解释二,需要两层都改。
选定提交层作为唯一责任方后,可以按下面的顺序落地,每一步的结果都会影响下一步:
需要说明适用边界:上述做法在网址形态相对稳定、上游系统数量有限时成立;如果上游系统持续新增且规则频繁变更,提交层的归一规则需要同步维护,否则唯一责任方会退化成“事后清理方”。另外,抓取限制不等于可靠的索引移除,站点地图也不保证收录,因此责任方的目标应定义为“保证提交清单的规范与可追溯”,而不是承诺收录结果。
即使责任方已明确,规模化后仍会出现新的例外,建议保留两个检查点。第一,定期抽样对比上游候选清单与提交层最终清单,确认差异只来自预期的归一规则。第二,当某个上游系统的生成逻辑变更时,先在小范围候选集上验证,再放开全量。这样做不能消除所有例外,但能把例外限制在可追溯的范围内,避免多个系统同时生成网址时责任再次模糊。