網站收錄

頁面始终不進索引:先核對 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 改完就立刻看结果,忽略了缓存和重新抓取需要的時間。
  • 屏蔽解除後马上期待索引變化,實际上還要等下一轮抓取與入库。

這三道闸彼此獨立,逐一核對通常比盲目改内容更快定位問题。確認它們都没問题之後,再回到内容厚度、内鏈深度和抓取预算這些层面做判断,结论才有依據。