先给结论:不要按“哪个系统最后写入”来定责任方,而要按“谁有权决定这个URL是否应该存在”来定。蜘蛛日志分析里同一批URL被多个系统改写、拼接或过滤时,唯一责任方应当是那个掌握URL存在性决策权的系统,其余系统只能作为信号提供者。判断依据不是日志里谁出现得晚,而是谁能独立解释这条URL为什么被生成、为什么被保留、为什么被丢弃。
第一种条件:URL的存在性由内容系统决定。比如商品、文章、分类页是否可访问,取决于内容是否发布、是否下架、是否被合并。此时内容系统是唯一责任方。站点地图生成器、内链模块、分页组件即使拼出了不同形式的网址,也只能反映内容系统给出的状态,不能反过来定义“这条URL应该被抓取”。
第二种条件:URL的存在性由路由或网关系统决定。比如带参数、带语言前缀、带分页路径的变体,是否返回可索引内容,由路由规则或边缘层决定。此时路由系统是唯一责任方。内容系统只提供实体,不决定最终对外暴露的URL形态。
两种条件不能同时成立。若内容系统说“已下架”,路由系统却仍生成可访问变体,责任方仍是路由系统,因为它违反了下游状态;若路由系统只做规范化,内容系统却持续输出带跟踪参数的链接,责任方回到内容系统,因为它污染了上游输入。
蜘蛛日志分析里常见的反常现象是:某个URL被抓取次数很高,但页面状态码是404或301。直觉会认为“抓取多”的系统就是责任方,但抓取量只说明蜘蛛看到了链接,不说明链接该不该存在。可以按下面这组证据区分:
这些证据的作用是避免把“最后写入者”误判为“唯一责任方”。最后写入可能只是覆盖,覆盖者未必理解URL的业务含义。
定义唯一责任方的实际动作是:为每类URL指定一个决策口,并让其他系统只读该决策口。假设某站点同时有内容系统、站点地图生成器和分页组件三处输出网址。可以先选内容系统作为决策口,因为它最接近“这个实体是否应该公开”。动作如下:
这个动作的结果会影响下一步:如果日志里异常URL仍然出现,但内容系统的规范字段没有对应记录,说明异常来自路由或边缘层,应把责任方改判为路由系统;如果规范字段本身就在输出错误URL,则责任方留在内容系统,优先修数据源而不是修重定向。
唯一责任方是治理目标,不是所有情况都能立刻做到。以下例外需要单独处理:
需要提醒的是,robots.txt的抓取限制不等于可靠的索引移除,站点地图也不保证收录。即使责任方已经明确,蜘蛛日志分析里请求量下降也不能单独证明处理正确,因为抓取预算变化、外链减少或服务器响应变慢都会产生类似现象。判断时应回到规范URL字段与状态码是否一致,而不是只看请求数量。
把责任方定在“谁决定URL存在”而不是“谁最后生成URL”,蜘蛛日志分析才会从追查请求量转向核对决策链,后续的修复动作也才有明确的验收对象。