常见問题

入口頁的 X-Robots-Tag 和 meta robots 寫得不一致:搜尋蜘蛛按哪個执行

入口頁的 X-Robots-Tag 和 meta robots 寫得不一致时,搜尋蜘蛛並不會二選一,而是把能讀到的指令叠加處理。本文說明两者的生效顺序、noindex 與 nofollow 的组合影响,以及排查响應头、缓存和頁面源碼的實操步骤。

常见問题

入口頁的 X-Robots-Tag 和 meta robots 寫得不一致:搜尋蜘蛛按哪個执行

入口頁同时寫 X-Robots-Tag 和 meta robots,是蜘蛛池运营里很常见的情况:模板里带了一段,服務器或 CDN 又加了一段。两者寫得不一样时,搜尋蜘蛛並不會挑一個更友好的来执行,而是把能讀到的指令叠在一起處理。

指令是叠加的,不是後者覆盖前者

以常见的 noindex 和 nofollow 為例,只要 HTTP 响應头或 HTML 里任意一處声明了 noindex,這個頁面就會被当作 noindex 看待;只要任意一處声明了 nofollow,里面的連結就會被当作 nofollow 處理。它們不是二選一,而是取更嚴格的那一邊。

  • 响應头 X-Robots-Tag: noindex,HTML 里寫 index:最终仍是 noindex。
  • 响應头 X-Robots-Tag: nofollow,HTML 里寫 follow:最终仍是 nofollow。
  • 响應头 noindex,HTML 里也寫 noindex:结果一致,只是重复。
  • 响應头寫 noindex,HTML 里寫 nofollow:两個效果都會出現,入口頁既不收錄,連結也不跟進。
多個来源的 robots 指令是合並關系,不是覆盖關系。想放行,必须所有来源都不拦截。

X-Robots-Tag 只看当次响應

X-Robots-Tag 是 HTTP 响應头,只有在這次請求的响應里出現才生效。很多入口頁會被 CDN 或反向代理缓存,缓存住的那份响應头可能和源站現在的不一样。如果源站已经去掉了 noindex,但邊缘节点還返回舊头,搜尋蜘蛛拿到的仍然是 noindex。

另外,响應头里可以出現多個 X-Robots-Tag,也可以在一個值里用逗号分隔多條指令。寫法不規范时,不同解析器可能有差异,能用一條清楚的寫法就不要堆叠多行。

meta robots 要能被解析到

meta robots 必须出現在 HTML 的 head 区域,頁面被解析後才生效。如果 head 里有语法错誤、标簽被注释掉,或者這段 meta 是由 JavaScript 動態插入的,搜尋蜘蛛不一定能讀到,這时起作用的可能只有响應头里的設定。

還有一種容易忽略的情况:入口頁返回的是非 HTML 内容,或者正文几乎為空,meta 就無從谈起,能生效的只剩 X-Robots-Tag 和連結本身的属性。

對入口頁里的連結意味着什么

要分清两件事:入口頁自身是否被索引,和入口頁里的連結是否被跟進。noindex 管的是前者,nofollow 管的是後者。很多运营者以為頁面寫了 noindex,里面的連結就自動不跟進了,實际上並不一定。

  • 只有 noindex:入口頁不進入索引,但連結仍可能被蜘蛛跟進。
  • 只有 nofollow:入口頁可以被索引,但連結不传递、不跟進。
  • noindex 加 nofollow:入口頁不索引,連結也不跟進,URL 發現只能靠 sitemap、外鏈或其他入口。

如果你的目的只是让入口頁不參與排名、但仍然承担 URL 發現的作用,就不要顺手加 nofollow;反過来,如果入口頁只是過渡用的頁面,也不打算让蜘蛛繼續往後走,那就明确寫成 noindex, nofollow,並保證所有来源一致。

排查顺序

  1. 用抓取工具或命令行只看响應头,確認有没有 X-Robots-Tag,值是什么。
  2. 再看 HTML 的 head,找到 meta robots,確認有没有寫错标簽名、漏掉引号或被注释。
  3. 检查 CDN、WAF、反向代理是否改寫或注入了响應头,缓存策略是否让舊头長期存在。
  4. 把 robots.txt 的 Disallow、連結上的 rel=nofollow 一起對照,確認到底卡在哪一步。
  5. 最後用服務器日誌驗證:目标頁有没有出現搜尋蜘蛛的訪問记錄,而不是只看入口頁的抓取量。

實操上的建议

入口頁的 robots 指令尽量只保留一個来源,要么放在响應头,要么放在 meta,避免两邊各寫一套。确實需要两處都寫时,让它們表達同一個意思,並在上线後用實际响應驗證一次,而不是只检查源碼。

蜘蛛池的入口頁经常批量生成、批量改模板,最容易出現的就是模板里一段、服務器配置里一段,最後互相打架。把這一項纳入上线检查,比事後從日誌里猜原因要省事得多。