识别配置互相冲突,核心是沿着百度蜘蛛从发现到抓取再到入库的链路,逐层核对同一件事有没有被两处相反地定义。最常见的冲突是:robots.txt 禁止抓取,但页面又提交了站点地图;或者页面写了 noindex,却指望它被收录。判断方法不是看某一项配置本身,而是看它对“能不能抓、能不能索引”的最终结论是否一致。
如果页面长期不被收录,先别急着改内容,而是收集三类可核对的现象:
Allow 还是 Disallow。<meta name="robots"> 里有没有 noindex 或 nofollow。如果抓取诊断显示“被 robots 拦截”,同时站点地图里又包含该 URL,这就是一处明确的冲突:站点地图只负责提示发现,不能让被禁止抓取的页面被正常收录。注意,robots.txt 的抓取限制不等于可靠的索引移除——它阻止的是抓取,已经入库的页面仍可能保留在索引中,所以用 Disallow 来“删收录”本身就是错误预期。
配置冲突大多可以归到两个维度,分开判断就不容易混:
noindex、canonical 指向、页面返回的状态码、内容是否与已有页面高度重复。这一层决定拿到的页面要不要进索引。典型冲突组合有:robots.txt 允许抓取,但 meta robots 写了 noindex;canonical 指向 A 页面,而 A 页面又 canonical 回 B 页面,形成互相指向;站点地图只收录 http 版本,但服务器 301 跳到 https 版本。这几种情况里,最终生效的往往是更严格的那一项,所以页面的实际结果会和你的预期相反。
HTTPS 也需要单独说明:启用 HTTPS 是配置项之一,但它不保证安全无漏洞,也不保证排名。把它和“能否被收录”混为一谈,容易掩盖真正的抓取或索引冲突。
找到疑似冲突后,按下面的顺序处理,避免同时改多项导致无法归因:
假设一个场景:某栏目页在 robots.txt 里被 Disallow: /column/ 拦截,同时该栏目页的 meta 是 index,站点地图也提交了它。此时冲突点在抓取层,索引层的设置根本不会被执行。处理方式是先放开抓取,再观察收录变化,而不是先去改 noindex 之类无关项。这个例子只用于说明判断逻辑,不代表任何真实项目结果。
改完后不要凭感觉判断,按固定检查项复查:
复查的周期取决于抓取频率,不同站点的抓取节奏差异很大,因此不设固定见效时间,也不保证收录。只要冲突项还在,重复提交站点地图也不会让页面被正常收录,因为站点地图本身不保证收录。
下一步:挑一个长期未收录的代表性 URL,把它的 robots 状态、响应头索引指令、meta robots 和 canonical 四项列成一张对照表,先找出结论相反的那一对,再动手修改。