识别配置互相冲突,核心是检查同一页面是否同时收到“允许抓取并收录”和“拒绝抓取或拒绝索引”两类指令。最典型的是 robots.txt 禁止抓取,但页面 meta robots 却写着 index,follow;或者站点地图提交了 URL,robots.txt 又屏蔽了对应目录。判断时以百度抓取工具的实际反馈为准,逐层核对抓取、渲染、索引三个环节的配置是否一致。
百度收录链路可以粗略拆成抓取、解析、索引三层。冲突往往出现在层与层之间,而不是单个文件内部。排查前先固定一个测试 URL,最好选一个内容完整、希望被收录的页面,不要用首页代替,因为首页常被特殊处理。
如果 robots.txt 禁止抓取,百度就无法读取页面里的 noindex 或 canonical。此时页面既不会被正常收录,也无法通过页面标签解除限制。这是最常见的互相冲突:一个配置说“别抓”,另一个配置说“别索引”,看似目的一致,实际会让后续修正失效。
以下步骤可以在不改动线上配置的前提下先做判断。假设测试 URL 为 https://example.com/page-a,仅作示例。
Disallow: /page-a 或覆盖它的目录规则。注意规则按最长匹配优先,不是按行顺序简单覆盖。<meta name="robots">,确认是否出现 noindex、nofollow 或 none。X-Robots-Tag: noindex。完成清单后,把结果分成三类:明确允许、明确拒绝、未声明。冲突就是同一页面同时出现“明确允许”和“明确拒绝”。例如 robots.txt 允许抓取,但 meta robots 写 noindex,属于页面层拒绝索引;站点地图又提交该 URL,属于入口层允许收录。两者并不直接矛盾,但会让收录结果偏向拒绝,需要统一。
很多人发现页面没收录,第一反应是加 noindex 或改 canonical,但如果 robots.txt 已经禁止抓取,这些页面级修改百度根本读不到。此时正确的顺序是先放开抓取,再处理索引指令。判断方法很简单:如果 robots.txt 禁止了测试 URL,而页面里又有 noindex,那么 noindex 实际上处于失效状态;反过来,如果 robots.txt 允许抓取,页面 noindex 才会被正常识别。
另一个容易忽略的冲突是 HTTP 与 HTTPS、带 www 与不带 www 之间的 canonical 互指。比如 A 页面 canonical 指向 B,B 页面 canonical 又指回 A,形成循环。百度无法确定哪个是主版本,可能两个都不收录,或者只收录其中一个。检查时把每个 URL 的 canonical 目标列出来,看是否形成闭环或指向 404、301 地址。
修改配置后不要只看一次抓取结果。建议按以下顺序验证:
/robots.txt 查看返回内容。如果修改后仍不收录,先区分“没抓取”和“抓取了没索引”。抓取记录可以在搜索资源平台的抓取诊断中查看;没有抓取记录时,优先检查 robots.txt、服务器状态和入口链接。有抓取记录但未索引时,再检查内容质量、重复页面和 canonical 冲突。
配置冲突往往不是一次写错,而是多次改动叠加出来的。维护时建议固定一个检查节奏:每次上线新目录、新模板或新跳转规则后,抽查一个代表性 URL,走一遍上面的六步清单。把 robots.txt、meta robots、X-Robots-Tag、canonical、站点地图这五项当成一组配置来管理,任何一项变更都同步检查其余四项。
如果站点有多个子域或多种终端,还要分别核查。百度对移动端和桌面端可能使用不同抓取策略,移动端页面若单独设置了 noindex,而桌面端允许收录,就会造成同一内容在不同版本间冲突。判断依据是实际返回给百度的 HTML 和响应头,而不是后台开关的名称。
下一步,选一个当前未被收录的目标 URL,按本文六步清单逐项记录结果,先确认是否存在“robots.txt 禁止抓取 + 页面 noindex”这类叠加冲突,再决定修改顺序。