網站收錄

X-Robots-Tag 與 meta 指令冲突:收錄指令的两處来源與核對顺序

頁面里明明没有 noindex,收錄却一直不進来?問题可能出在 HTTP 响應头。X-Robots-Tag 與 meta robots 是两套入口,指令會叠加而不是互相覆盖。本文梳理冲突規則、三類容易被漏掉的来源,並给出四步核對顺序,帮你把排查范围從頁面源碼扩展到整條响應鏈路。

網站收錄

X-Robots-Tag 與 meta 指令冲突:收錄指令的两處来源與核對顺序

排查頁面不收錄时,大多數人的第一反應是打開 HTML 源碼,確認有没有 noindex。但索引指令不止存在于頁面里,它還可以寫在 HTTP 响應头中。当两處指令不一致时,只看其中一處很容易得出错誤结论。

两處指令,同一個字段

搜尋引擎讀取的 robots 指令有两個入口:

  • 頁面内:HTML 中的 meta robots 标簽,只作用于 HTML 頁面。
  • 响應头里:X-Robots-Tag,作用于任何通過 HTTP 返回的资源,包括 PDF、图片、视频、接口文档等無法插入 meta 的文件。

两者内容格式基本一致,都支持 noindex、nofollow、noarchive、nosnippet 等指令,也可以限定只對某個搜尋引擎 UA 生效。

冲突时以谁為准

關键结论是:指令是叠加的,不是互相覆盖的。同一個頁面上,meta 里寫 index、响應头里寫 noindex,结果按 noindex 處理;反過来也一样。限制越嚴格的指令優先級越高。

同理,多個 X-Robots-Tag 响應头會逐條累加;同一行里用逗号分隔的多條指令也會一起生效。如果分隔符寫错,某條指令可能被直接丢弃,這類细节最好實测確認,而不是凭记忆判断。

排查时不要問“哪一條指令生效”,而要問“所有指令加起来包含了什么限制”。

最容易漏掉的三類来源

1. 全站统一加的响應头

CDN、WAF、反向代理或某些缓存插件會預設给所有响應追加 X-Robots-Tag。配置一次,全站资源都可能带上 noindex。這類問题的特征是:頁面内容正常、内鏈也是通的,但所有 URL 的收錄狀態異常一致。

2. 按目錄或扩展名定向加的头

例如只對某個目錄或 .pdf 结尾的請求加 noindex。此时首頁、栏目頁收錄正常,某一批资源集体不進索引,很容易被誤判成“内容质量不行”。

3. 不同 UA、不同节点看到的不一样

部分防護策略會對非浏览器 UA 返回不同的响應头,或者不同 CDN 节点缓存了不同版本的头。你本地拿到的是 A 版本,蜘蛛拿到的是 B 版本,两邊结论自然對不上。

四步核對顺序

  1. 看原始响應头:用不缓存的方式請求目标 URL,確認返回头里有没有 X-Robots-Tag。命令行工具拿到的第一手响應,比“頁面源碼里没看到 noindex”更可靠。
  2. 對比 UA:分別用普通 UA 和搜尋引擎 UA 請求同一個 URL,看响應头是否一致。不一致就說明中間有设备在做條件判断。
  3. 覆盖非 HTML 资源:把站内的 PDF、图片、文档按類型抽样,單獨检查它們的响應头。這些文件没有 meta 可以兜底,只能靠头来控制。
  4. 看蜘蛛實际拿到的版本:在搜尋後台的網址检查里查看已抓取的内容與抓取詳情,確認蜘蛛当时收到的是哪個版本,而不是你現在能看到的版本。

两個邊界提醒

一,响應头里的 noindex 需要蜘蛛真正抓取到才能被讀到。如果同时用 robots.txt 拦住了抓取,指令就没有机會生效,這两件事要分開處理。二,把 noindex 去掉之後,恢复通常不是即时的,需要等下一次抓取與重新處理,不要因為当天没變化就反复改動配置。

把“頁面里没有 noindex”扩展成“整條响應鏈路上都没有 noindex”,很多看起来莫名其妙的收錄問题,往往能当场定位到源头。