頁面提交了 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 里的地址如果和頁面最终地址對不上,等于提交了一個不存在的入口,蜘蛛照样進不来。
一套可执行的核對清單
- 用抓取工具或引擎自带的 URL 检查功能,同时看原始 HTML 與响應头里的 robots 指令。
- 打開 robots.txt,確認目标路径没有被 Disallow,並检查是否存在互相冲突的多條規則。
- 检查服務器、CDN、反向代理层是否统一注入了 x-robots-tag。
- 確認頁面存在可抓取的内鏈入口,且锚点是真正的連結标簽,不是点击事件。
- 核對 sitemap 中的地址與頁面最终地址是否完全一致。
容易踩的誤判
- 把“没被抓取”当成“被抓取但没進索引”,两種情况的處理方向完全不同。
- 只看頁面源碼,忽略响應头,结果漏掉 CDN 统一加上的指令。
- robots.txt 改完就立刻看结果,忽略了缓存和重新抓取需要的時間。
- 屏蔽解除後马上期待索引變化,實际上還要等下一轮抓取與入库。
這三道闸彼此獨立,逐一核對通常比盲目改内容更快定位問题。確認它們都没問题之後,再回到内容厚度、内鏈深度和抓取预算這些层面做判断,结论才有依據。