唯一责任方应当定义为“最终写入提交数据的那个环节”,而不是生成规则最多的系统。只要同一批URL可能被两套以上规则分别产出,就必须指定一个系统负责合并、去重并输出最终清单,其他系统只提供候选,不直接触发提交。否则你会在样本上看到一切正常,规模化后却出现重复提交、遗漏或状态互相覆盖。
常见情形是:CMS按内容类型生成一批URL,路由层按栏目结构再生成一批,营销工具又按活动页单独生成一批。测试几十条时,三份清单几乎一致,提交后表现也正常;当页面数上升到几千条,开始出现同一URL被提交两次、某个子目录整段缺失、或者旧URL被重新推入提交队列。此时若只盯着“哪份清单更全”,很难定位责任。
关键区别在于:样本阶段规则之间的差异很小,规模放大后差异被累积放大。因此判断责任方不能看谁生成的URL多,而要看谁掌握最终提交动作。
解释一:规则本身冲突。各系统对“什么算可提交URL”的定义不同,比如是否包含带参数的筛选页、是否包含分页、是否包含已设置<meta name="robots" content="noindex">的页面。若三套规则各自独立判断,冲突就发生在生成阶段。
解释二:提交链路没有唯一合并层。规则可能都合理,但每个系统都能直接调用提交动作,导致同一URL被多次写入,或者后写入的状态覆盖先写入的状态。这种情况下,问题不在规则内容,而在职责边界。
两种解释都会表现为“部分URL异常”,但处理方向完全不同:前者要统一规则口径,后者要收回提交权限。
先做一次可复核的对照。假设你从三套系统各导出同一时间段的URL清单,分别标记来源,然后按URL字符串去重,统计三类数量:只出现在一套系统中的、出现在两套以上的、以及被两套以上系统分别触发提交的。这个统计不说明对错,只说明重叠结构。
这些现象还有别的解释:抓取量下降可能来自服务器响应变慢,提交后未收录可能来自页面质量或重复内容,不能单独用“提交成功”推断处理正确。因此证据要落在“谁写入了什么”上,而不是只看最终收录表现。
可行做法是设立一个“提交出口”系统,它接收其他系统的候选URL,执行统一过滤和去重,再输出最终提交清单。其他系统不再直接提交,只提供带来源标记的候选。这个动作的结果是:任何URL是否被提交,都能追溯到唯一出口,而不是分散在多个系统里。
落地时需要写清三条边界:
需要说明适用条件:如果站点只有一个发布系统、URL来源单一,这套合并层可能显得多余;但只要存在两套以上能独立产出URL的系统,就应提前划定出口。站点地图可以列出希望被发现的URL,但不保证收录;robots.txt 的限制也不等于可靠的索引移除,这两件事不能替代提交出口的职责划分。
假设某站点有CMS、路由层和活动工具三套来源。在出口系统里给每条候选URL加上来源字段,提交前记录“来源组合”。运行一段时间后,如果发现某类URL总是由两套来源同时提供且被重复提交,就能确认问题出在合并层缺失;如果发现某类URL从未进入候选,则要回到生成规则去查。这个例子的数字和场景都是假设,目的是说明比较方法,不代表真实项目结果。
最终判断标准很简单:当出现例外时,能否只改一个地方就修复。如果答案是否定的,说明唯一责任方还没有真正定义。