识别配置冲突的核心方法,是把影响抓取和索引的几层配置分别列出来,再逐层对照同一批URL的结论是否一致。常见误解是:只要robots.txt没有屏蔽、站点地图也提交了,页面就应该被收录。实际上,robots.txt、meta robots、canonical、站点地图、服务器响应和站内链接各自表达的是不同意图,任何两处给出相反信号,都可能让抓取或索引环节做出与你预期不同的选择。
robots.txt 的 Disallow 只表示不希望爬虫抓取某个路径,它并不等于把已收录页面移除,也不能替代 noindex。反过来,如果页面被 robots.txt 禁止抓取,爬虫通常就无法读到页面里的 <meta name="robots" content="noindex">,这个 noindex 也就难以生效。这是最典型的配置冲突之一:一边用 robots.txt 挡住抓取,一边又指望页面上的 noindex 完成移除。
判断方法很直接:对同一个URL,分别检查服务器返回状态、robots.txt 是否允许抓取、HTML 中是否有 noindex。如果 robots.txt 禁止抓取,而 HTML 又写了 noindex,应优先考虑放开抓取,让爬虫能读到 noindex,再观察后续变化。适用条件是页面需要被移除;如果页面只是不希望被抓取且无需处理已收录状态,则单用 robots.txt 即可。
时间和人手有限时,不要全站铺开,先抽10到30个有代表性的URL,覆盖首页、栏目页、详情页和近期新增页。对每个URL记录以下项目,形成一张对照表:
对照时重点看矛盾组合。例如:页面返回200且 meta robots 为 index,但 canonical 指向另一个URL,那么搜索引擎可能把收录归到 canonical 目标上,原URL表现为“不收录”。又例如:站点地图里列了某URL,但该URL在 robots.txt 中被禁止抓取,站点地图的提交就不代表它会被正常抓取。站点地图本身不保证收录,它只是发现线索之一。
canonical 冲突常出现在几种场景:同一内容有带参数和不带参数两个版本,两个版本都自指 canonical;移动端和桌面端互相指向错误;HTTP 与 HTTPS、带 www 与不带 www 同时可访问,且各自 canonical 指向自己。这些情况下,搜索引擎需要自行判断哪个是主版本,结果可能与你预期不同。
正确处理方式是有条件的:先确定唯一主版本,再让其他版本通过301或 canonical 指向它,并且不要在同一页面上给出互相矛盾的信号。如果页面确实需要保留多个可访问版本,至少保证 canonical 一致指向主版本。判断结果是:当所有变体的 canonical 都收敛到同一URL,且该URL可抓取、返回200、未被 noindex,配置层面才算自洽。
启用 HTTPS 是传输层配置,它不保证网站没有漏洞,也不保证排名或收录。把 HTTPS 当成收录问题的万能解释,容易掩盖真正的冲突。需要核查的是:HTTP 版本是否正确跳转到 HTTPS、跳转是否可被抓取、HTTPS 页面是否返回200、证书是否有效、canonical 是否指向 HTTPS 主版本。如果 HTTP 和 HTTPS 都能返回200且各自 canonical 自指,就是需要处理的冲突。
人手有限时,按“影响URL数量 × 是否阻断抓取”排序:
每改完一项,用同一批URL重新对照,确认矛盾项减少,而不是只看单个页面是否立刻收录。不同搜索引擎对 robots、canonical、站点地图的支持细节需要分别核查,不要用一套结论套用所有引擎。
下一步:建立一张包含上述六列的URL对照表,先填10个样本,把存在两项以上矛盾信号的URL标出来,从影响面最大的模板开始修改。