识别配置互相冲突,核心是找出“同一个URL被不同来源给出了不一致指令”的地方。百度收录依赖抓取和索引,而robots.txt、页面meta robots、HTTP响应头X-Robots-Tag、canonical、站点地图、内链和跳转规则,任何两处说法相反,都可能让抓取或索引行为偏离预期。判断方法不是看某一项配置是否“标准”,而是逐项比对同一URL在所有入口上的声明是否一致。
把待检查的URL列出来,每个URL单独一行,横向记录以下字段:
<meta name="robots"> 的完整内容,例如 noindex,follow;X-Robots-Tag,值是什么;<link rel="canonical"> 指向哪个URL;这张表的作用是让冲突可见。只测一个页面往往看不出问题,批量列出后,矛盾会集中在少数几行里。
第一类:robots.txt 禁止抓取,但站点地图仍然提交该URL。站点地图只是发现线索,不保证收录。如果robots.txt屏蔽了某个目录,百度无法抓取该目录下的页面,站点地图里列出这些URL只会增加无效提交。判断方法是用百度搜索资源平台提供的robots检测工具或手动核对规则,确认目标URL是否被Disallow命中。
第二类:页面允许抓取,但meta robots或X-Robots-Tag写了noindex。抓取和索引是两件事。robots.txt允许抓取,只代表爬虫可以读取内容;如果页面自身声明noindex,正常情况下不会被索引。冲突点在于:站点地图、内链、canonical都在推荐这个URL,而页面自己拒绝索引。检查时优先看HTTP响应头中的X-Robots-Tag,因为它可能由服务器或CDN统一添加,容易覆盖页面里的meta设置。
第三类:canonical指向A,但页面实际返回301跳转到B。canonical是建议性信号,跳转是更强制的行为。如果两者指向不同URL,百度可能按跳转处理,也可能按canonical聚合,结果不稳定。判断时用抓包或命令行查看响应状态码和Location头,再与页面源码中的canonical比对。若A和B内容相同,应统一成一个URL;若内容不同,说明canonical用错了对象。
第四类:HTTPS与HTTP版本同时可访问,且各自有独立配置。HTTPS不保证安全无漏洞,也不保证排名。真正的问题是同一份内容有两个可访问版本,而robots.txt、canonical、站点地图分别指向不同版本。检查方法是分别请求HTTP和HTTPS版本的同一路径,看是否返回200、是否跳转、页面里的canonical是否一致。如果两个版本都返回200且canonical各指自己,就是典型冲突。
curl -I 查看HTTP状态码和响应头,确认是否有X-Robots-Tag、Location跳转或缓存头。这一步排除服务器层和CDN层的干预。三步做完后,给每个冲突标注“已定位”或“可能原因”。例如,页面未被收录,可能原因是noindex,也可能是robots.txt屏蔽,还可能是内容质量或抓取配额问题;只有在响应头或meta中实际读到noindex,才能说“已经定位为noindex导致”。
修正配置后,不要只凭感觉判断。可以核对的信号包括:
这些信号说明配置冲突已消除,但不等于一定收录。收录还受内容质量、抓取预算和百度自身判断影响,配置一致只是必要条件。
下一步:挑出你站点中最重要的10个URL,按上面的对照表逐行填写,优先处理“robots.txt允许但meta noindex”以及“canonical与跳转目标不一致”这两类冲突,改完后用抓取诊断重新请求一次。