网站收录

页面始终不进索引:先核对 robots 层面的三道闸

页面提交了 sitemap、也挂了内链,索引里却始终没有它。与其先怀疑内容质量,不如先核对 robots 层面的三道闸:站点级 robots.txt、页面级 meta robots、响应头里的 x-robots-tag。三者在抓取入口处拦截,后面的内容优化都无从谈起。本文给出一套按先后顺序执行的核对清单。

网站收录

页面始终不进索引:先核对 robots 层面的三道闸

页面提交了 sitemap、也挂了内链,但索引里始终没有它的影子。这时候很多人第一反应是内容质量不够,其实更常见的卡点在前端:robots 层面的三道闸——站点级 robots.txt、页面级 meta robots、响应头里的 x-robots-tag。这三者只要有一个在拦,页面就连入场的机会都没有,后面再谈内容厚度都是空谈。

为什么把 robots 放在第一步

因为它是前置条件。内容质量、内链深度、抓取预算这些判断,都建立在页面“能被抓、能进索引”的前提上。robots 这一层检查成本最低、耗时最短,却最容易被跳过。很多人看日志发现蜘蛛几乎没来过这个路径,就断定是蜘蛛不爬,而不是自己把入口关了。

第一道闸:robots.txt 的 Disallow 与 Allow

  • 先确认 robots.txt 本身可访问,返回 200,不是 404,也不是跳到别的地址。
  • Disallow 写的是路径前缀,不是完整 URL,多写或少写一个字符可能整站被拦。
  • 带通配符的规则要格外小心,比如屏蔽所有带问号的地址时,正常参数页可能被一起挡掉。
  • Allow 与 Disallow 同时命中时,规则优先级要看具体引擎的说明,不要依赖复杂写法。
  • 留意测试环境遗留的 robots.txt 被一起同步上线的情况,这在改版时很常见。

需要记住一点:robots.txt 只能阻止抓取,不能直接决定索引。但一个从没被抓过的地址,基本没有进索引的机会,这个因果关系足够让它在排查顺序里排在前面。

第二道闸:页面级 meta robots 与响应头指令

  • 页面 head 里的 meta robots,常见取值有 noindex、noindex, nofollow、none 等,写成 noindex 后即使被抓也不会进索引。
  • x-robots-tag 写在 HTTP 响应头里,同样有效,而且经常由服务器配置、CDN 或反向代理统一注入,页面源码里看不到。
  • 内容靠前端渲染的站点,meta 指令可能是渲染后才注入的,核对时要看渲染结果,而不是只看原始 HTML。
  • 分页、筛选页、附件、PDF 常被统一加了 noindex,先从响应头把全站规则对一遍,再逐页看。
noindex 和 canonical 同时指向别处时,不同引擎的处理并不一致。要么让它被索引,要么明确不索引,不要对同一个地址同时发出两种相反的信号。

第三道闸:入口与链接层面

页面本身没有被 noindex,但所有指向它的链接都带 nofollow,或者入口只是一个按钮脚本,蜘蛛依然可能找不到它。核对时看三处:站内导航、面包屑、列表页是否输出了真正的 a 标签;链接是否经过跳转脚本中转;地址是否与 sitemap 里写的完全一致,包括协议、大小写和结尾斜杠。

顺带说一句,sitemap 里的地址如果和页面最终地址对不上,等于提交了一个不存在的入口,蜘蛛照样进不来。

一套可执行的核对清单

  1. 用抓取工具或引擎自带的 URL 检查功能,同时看原始 HTML 与响应头里的 robots 指令。
  2. 打开 robots.txt,确认目标路径没有被 Disallow,并检查是否存在互相冲突的多条规则。
  3. 检查服务器、CDN、反向代理层是否统一注入了 x-robots-tag。
  4. 确认页面存在可抓取的内链入口,且锚点是真正的链接标签,不是点击事件。
  5. 核对 sitemap 中的地址与页面最终地址是否完全一致。

容易踩的误判

  • 把“没被抓取”当成“被抓取但没进索引”,两种情况的处理方向完全不同。
  • 只看页面源码,忽略响应头,结果漏掉 CDN 统一加上的指令。
  • robots.txt 改完就立刻看结果,忽略了缓存和重新抓取需要的时间。
  • 屏蔽解除后马上期待索引变化,实际上还要等下一轮抓取与入库。

这三道闸彼此独立,逐一核对通常比盲目改内容更快定位问题。确认它们都没问题之后,再回到内容厚度、内链深度和抓取预算这些层面做判断,结论才有依据。