识别 robots.txt 配置冲突,核心是判断同一路径是否被“允许”和“禁止”同时覆盖、不同 User-agent 段落是否给出相反指令、以及 robots.txt 与页面 meta robots 或 X-Robots-Tag 是否互相矛盾。只要出现“一处放行、另一处拦截”,就应视为冲突,优先检查最具体的规则和实际生效的抓取工具。
要查的是:目标 URL 是否同时匹配多条 Allow 和 Disallow。怎么查:把 robots.txt 中所有规则按路径长度排序,找出能匹配该 URL 的规则,比较哪条更具体。结果说明:当 Allow 和 Disallow 都能匹配时,通常更长的路径规则优先;如果长度相同,限制性规则往往优先。若你无法判断,直接把目标 URL 放进搜索引擎官方的 robots.txt 测试工具中看实际判定,不要只看文本猜测。
要查的是:同一路径是否在 User-agent: * 下被禁止,却在某个具体爬虫段落中被允许,或反过来。怎么查:先确认目标抓取工具使用哪个 User-agent,再检查它是否匹配专门段落。结果说明:专门段落存在时,通常不再合并通用段落的规则;如果专门段落只写了 Allow,而通用段落写了 Disallow,实际行为要以专门段落为准。若专门段落为空或缺失,才会回退到通用段落。这里要区分“可能冲突”和“已定位冲突”:只有确认抓取工具实际采用的段落,才能下结论。
要查的是:robots.txt 允许抓取,但页面 <meta name="robots" content="noindex"> 要求不索引;或 robots.txt 禁止抓取,页面却希望被索引。怎么查:对目标 URL 查看 HTML 头部 meta robots,以及 HTTP 响应头中的 X-Robots-Tag。结果说明:robots.txt 的 Disallow 只限制抓取,不等于可靠的索引移除;如果页面已被禁止抓取,搜索引擎可能无法读取页面上的 noindex,从而继续保留旧索引。反过来,允许抓取但页面 noindex,则通常不会进入索引。两者目标不一致时,应按“先允许抓取,再让页面 noindex 生效”的顺序处理。
时间和人手有限时,按“影响收录的禁止规则 → 放行敏感目录 → User-agent 矛盾 → 页面级指令冲突 → sitemap 不一致”的顺序处理。每改一次,重新用测试工具验证目标 URL 的判定结果,并记录修改前后的规则,避免把冲突从一个段落转移到另一个段落。
不是所有矛盾都必须马上处理。如果被禁止的是不应收录的目录,而页面也没有 noindex,这属于策略一致,不必修。如果被禁止的是希望收录的正文页,且页面没有 noindex,这就是高优先级冲突。如果被禁止的是希望移除的旧页面,但页面已有 noindex,则要评估是否先允许抓取让 noindex 生效。判断依据是:该 URL 的最终目标是什么,以及当前配置是否阻止该目标实现。目标不明确时,先不要批量改规则,先列出需要收录和不需要收录的 URL 清单。
下一步:选一个当前最影响收录的目标 URL,按上面的清单逐项核对,把 robots.txt、页面 meta robots 和 sitemap 三处对该 URL 的指令写成一行对照,再决定先改哪一处。