站点运营

meta robots 與 X-Robots-Tag 自查:把“別抓我”的指令用對地方

meta robots 與 X-Robots-Tag 分別寫在頁面和响應头里,决定蜘蛛抓到内容之後如何處理。很多站点的 noindex 来自模板、插件或服務器配置,平时不易察觉。這篇文章梳理两類指令的区別、常见誤用和一份可执行的自查清單,帮助你在不動正文的前提下,把该放的頁面放開、该挡的頁面挡住。

站点运营

meta robots 與 X-Robots-Tag 自查:把“別抓我”的指令用對地方

為什么這两類指令值得單獨排查

robots.txt 决定蜘蛛能不能来抓,meta robots 與 X-Robots-Tag 决定抓到之後怎么處理。前者像站点门口的牌子,後者贴在頁面或文件本身。很多站点的 noindex 並不是編輯手動加的,而是模板、插件或服務器配置在後台统一輸出的,平时不容易注意到。一旦輸出错,頁面可能長期不進索引,排查时還容易只盯着 robots.txt,忽略頁面内部和响應头里的信号。

先分清两條通道

meta robots 寫在 HTML 的 head 里,只對目前 HTML 頁面生效,常见取值包括 noindex、nofollow、noarchive、nosnippet、max-snippet、max-image-preview 等。X-Robots-Tag 是 HTTP 响應头,可以作用在 HTML 頁面,也可以作用在 PDF、图片、视频、JS 等非 HTML 资源上。两者同时出現时,限制性更强的那個通常會被遵守,所以不要以為頁面里寫了 index 就能覆盖响應头里的 noindex。

几種常见的誤用

全站模板誤加 noindex

測試环境上线时忘记去掉 noindex,或者主题模板把 noindex 当成預設值輸出,是很常见的情况。表現是頁面能正常訪問、内容也在,但索引里一直不见踪影。检查时不要只看首頁,栏目頁、詳情頁、分頁、搜尋结果頁都各抽一两個样本看源碼,才能確認影响范围。

robots.txt 與 noindex 打架

如果 robots.txt 已经禁止抓取某個目錄,蜘蛛就看不到目錄里的 noindex 标簽。结果是頁面既不進索引,也無法通過 noindex 让它明确登出;如果之前已经被索引,還可能残留舊快照。這類情况下要么放開抓取让蜘蛛讀到 noindex,要么接受 robots.txt 的限制,不要同时用两套互相矛盾的方案。

nofollow 用得太随意

nofollow 寫在頁面級別會限制该頁所有連結的传递。如果只是為了處理少量不可信連結,優先在單個連結上加 rel="nofollow" 或 rel="sponsored",而不是整頁 nofollow。整頁 nofollow 用多了,站内正常的導航和内容連結也會一起受影响。

X-Robots-Tag 在非 HTML 资源上丢错

图片、PDF、视频文件没有 head,只能靠响應头控制。如果服務器或 CDN 對所有文件统一加了 noindex,可能连正常希望被發現的图片和文档一起挡掉。反過来,需要保密的文件如果只在頁面里寫了 noindex,文件本身仍可能被抓到。

自查清單

  1. 打開頁面源碼,搜尋 robots,確認 head 里的指令與预期一致,注意不要出現在 HTML 注释里。
  2. 用 curl -I 或浏览器開發者工具看响應头,確認没有意外的 X-Robots-Tag。
  3. 检查 CDN 與缓存配置,頁面内容改過之後,响應头是否也跟着更新。
  4. 抽查分頁、标簽聚合頁、搜尋结果頁、打印頁等容易被模板统一處理的頁面類型。
  5. 检查 robots.txt 與頁面 noindex 是否互相矛盾。
  6. 確認 nofollow 的层級正确,该在連結上而不是在整頁上。
  7. 上线前和改版後各跑一遍抽样,把检查结果记下来,方便前後對比。

驗證时可以用到的办法

站長工具通常提供網址检查和抓取測試,能看到蜘蛛實际拿到的响應头和頁面内容。也可以直接用命令行請求頁面,看返回头里有没有 X-Robots-Tag,再和頁面源碼里的 meta 指令對照。對图片、PDF 這類资源,用同样的方式請求文件地址即可。

指令只是表達意图,最终是否抓取、是否索引由搜尋引擎决定。把该抓的頁面放開,把不该抓的頁面明确挡住,剩下的交给時間。