识别 robots 配置冲突,核心是判断同一路径在 robots.txt、页面级 robots meta、X-Robots-Tag 响应头和站点地图之间是否得到了一致的“允许抓取、允许索引”信号。冲突不一定报错,也不一定立刻见效,但会让抓取和索引行为偏离预期。时间和人手有限时,按下面的清单从影响面最大的地方查起,每项都给出查什么、怎么查、结果说明什么。
要查的是同一爬虫对同一路径的规则是否互相打架。robots.txt 按 User-agent 分组,同一组内多条规则命中同一路径时,不同实现对 Allow 与 Disallow 的取舍不完全一致,长路径与短路径的优先级处理也可能不同。
Allow: /a/ 又有 Disallow: /a/b/,说明规则依赖具体实现取舍,属于冲突信号,应合并成一条明确规则。适用条件是站点规则较多、由多人维护。若规则很少且只有一条 Disallow,通常不必先查这里。
robots.txt 的 Disallow 只限制抓取,不保证页面不被索引;页面仍可能因外部链接被收录。反过来,robots.txt 允许抓取,但页面 meta 写 noindex,结果就是能抓不能收。两者方向相反时,先确认目标到底是“不抓”还是“不收”。
<meta name="robots"> 是否含 noindex。判断依据是抓取与索引是两个阶段,不能互相替代。需要移除索引时,优先让页面可抓取并返回 noindex,而不是只靠 robots.txt。
X-Robots-Tag 是 HTTP 响应头形式的 robots 指令,常用于非 HTML 文件。当响应头和页面 meta 同时存在且取值不同时,限制更严的一方通常生效,但具体行为需分别核查目标搜索引擎的说明。
curl -I 页面地址;再取页面源码看 meta。适用条件是站点同时用服务器配置和模板控制指令。若只有模板控制,可跳过响应头这一项。
站点地图用于提交可抓取 URL,不保证收录。如果站点地图里列出的 URL 又被 robots.txt 禁止抓取,或页面带 noindex,就等于一边提交一边拒绝,属于明显冲突。
这一步适合 URL 数量可控的站点。数量很大时,先抽样检查最近新增和流量最高的目录。
前面几项都是静态比对,最后要用实际抓取验证哪条规则真正生效。不同搜索引擎的抓取测试工具和报告口径不同,需分别核查,不能用一个工具的结果推断全部。
判断结果是:抓取成功且指令一致,说明该 URL 无冲突;抓取被拒或指令与预期相反,说明冲突仍在,按报告指向的位置修改后重新测试。
下一步:按上述顺序先处理 robots.txt 内部矛盾,再处理抓取与索引方向相反的问题,每次只改一处并复测,避免多个改动混在一起无法判断是哪条生效。