识别配置互相冲突,核心方法是在爬虫日志里找“同一类抓取行为出现两种相反结果”。例如同一个目录,一部分请求返回 200,另一部分被 403 拒绝;或者同一批 URL,有的被频繁抓取,有的长期为零。出现这种分裂,说明 robots.txt、页面 meta 标签、HTTP 头、内链和站点地图等配置之间至少有一处互相矛盾。判断冲突不能只看单条日志,要把 URL 按目录或模板分组,比较各组的状态码、抓取频次和响应头,再回到对应配置文件确认谁在生效。
配置冲突通常不会直接报错,而是留下不一致的抓取痕迹。可以优先关注以下信号:
noindex,但日志显示该页被反复抓取,说明抓取入口和索引指令不一致。这些信号只是线索,不是结论。403 可能来自服务器防火墙,429 可能来自抓取频率限制,零抓取也可能只是页面权重低。需要结合响应头、robots.txt 和页面指令逐项排除。
时间和人手有限时,逐条读日志效率很低。更实际的做法是按 URL 模板分组,例如按 /product/、/tag/、/search/ 这类路径前缀聚合,统计每组的状态码分布和抓取次数。然后做一张简单对照表:
noindex 或 canonical 指向其他 URL。举例来说,假设某站点 /old/ 目录在 robots.txt 中未被禁止,页面也没有 noindex,但日志中该目录请求全部返回 403。这时冲突点可能不在 robots.txt,而在服务器规则或 CDN 配置。反过来,如果 robots.txt 禁止了 /old/,日志中却仍有大量抓取,说明禁止规则可能写错了路径,或者抓取来自其他入口。两种情况处理顺序不同:前者先查服务器,后者先查 robots.txt 语法和路径匹配。
不是所有冲突都值得立刻修。可以用两个维度排序:影响范围和修复成本。影响范围指受该配置影响的 URL 数量,修复成本指改一处配置还是需要改模板、服务器和站点地图多处。
noindex 误伤大量可索引页面。需要改模板并重新部署,优先排期但确认改动范围。判断影响范围时,用日志中该分组的请求占比估算,不要凭感觉。判断修复成本时,先确认配置由谁控制:是运维、前端模板还是内容编辑。控制方不明确时,先记录证据再推动,避免反复沟通。
修改配置后,不能只看配置文件本身,要回到日志验证。可以设定一个观察窗口,例如修改后 3 到 7 天,重新统计同一分组的抓取状态。判断标准是:原先分裂的状态码分布是否收敛,被禁止的 URL 是否停止出现抓取记录,站点地图中的 URL 是否与实际返回状态一致。
如果修改后日志没有变化,可能原因包括:缓存未刷新、CDN 仍返回旧规则、robots.txt 未被重新抓取、或者冲突点根本不在已改的那一项。此时不要继续叠加修改,先确认上一次改动是否已经生效。可以用 curl -I 查看响应头,直接请求 robots.txt 确认内容,再对比日志时间戳,区分“还没生效”和“改错了地方”。
下一步,从日志中选出请求量最高的三个目录,按上面的分组对照表各做一次检查,先标记出方向相反的两项配置,再决定先改哪一个。