做蜘蛛池入口頁的人,通常會把注意力放在連結放在哪、robots.txt 怎么寫、meta 标簽有没有加 nofollow 上,却容易忽略一個更隐蔽的位置:HTTP 响應头里的 X-Robots-Tag。它不寫在 HTML 源碼里,用浏览器查看源代碼根本看不到,一旦被服務器或 CDN 預設加上,搜尋蜘蛛可能连頁面上的目标連結都不會去跟踪。
X-Robots-Tag 和另外两種指令的区別
控制搜尋蜘蛛的常见手段有三種,作用位置和生效时机都不一样:
- robots.txt:放在站点根目錄,告诉蜘蛛哪些路径可以抓、哪些不可以。它在抓取之前生效,被禁止的頁面蜘蛛通常不會請求。
- meta robots:寫在 HTML 的 head 区域,頁面被抓取之後才被讀到,用来控制是否索引、是否跟踪頁面上的連結。
- X-Robots-Tag:寫在 HTTP 响應头里,由 Web 服務器、CDN、反向代理下發。它的作用范围比 meta 更广,能作用于图片、PDF 等非 HTML 文件,也能按目錄批量下發。
正因為 X-Robots-Tag 在头部而不在頁面里,很多入口頁配置出問题时,站長在頁面上翻半天也找不到原因。
不同取值對目标連結發現的影响
X-Robots-Tag 可以带多個值,用逗号分隔。對蜘蛛池入口頁来说,下面几個值要特別注意。
noindex 和 none
noindex 的含义是不要把這個頁面放進索引。它主要影响頁面本身的收錄狀態,並不等于禁止跟踪頁面上的連結。搜尋引擎需要先抓到頁面、讀到指令,才知道它不该被索引,所以頁面上的連結通常仍有被跟踪的可能。不過這属于各家的實現细节,長期把入口頁放在 noindex 狀態下,連結被發現和被赋予的重视程度可能下降,不适合当成一種稳定做法。
none 相当于同时包含 noindex 和 nofollow,影响面更大。
nofollow
nofollow 是直接和連結跟踪相關的值。放在响應头里时,等于告诉蜘蛛「不要跟踪這個頁面上出現的連結」。對入口頁来说,這一條几乎是致命的:頁面能被抓取,但里面的目标 URL 不會顺着連結被走到。需要注意的是,主流搜尋引擎對 nofollow 的處理属于提示性信号,不保證百分百不跟踪,實际表現要看蜘蛛日誌,不要凭猜测下结论。
noarchive、nosnippet 等
noarchive 影响是否提供網頁快照,nosnippet 影响摘要展示,notranslate 影响翻译功能。這几個對連結發現基本没有直接作用,但配置含义容易和 noindex 混淆,改配置时不要一起批量加上。
入口頁常见的誤配置场景
- 整套站点為了「保護内容」,在 Nginx 或 Apache 全局加了一行 X-Robots-Tag: noindex,结果所有入口頁都被覆盖。
- CDN 或 WAF 的預設安全策略里带了 nofollow,站長只看了 HTML,没查响應头。
- 反向代理把測試环境的头部原样带到线上。
- 程序框架在輸出非 HTML 文件时统一加了一段头部規則,而入口頁正好走了同一條規則。
只检查頁面源碼,不检查响應头,等于漏掉了一半的抓取指令。
怎么確認入口頁有没有被响應头限制
- 用命令行請求一次入口頁,例如把請求头打印出来,只看响應头部分,重点找有没有 X-Robots-Tag 這一行。
- 用浏览器開發者工具的網絡面板刷新入口頁,在响應头列表里核對同样的一行。
- 把返回结果和目标 URL 的蜘蛛日誌對照:如果入口頁訪問日誌里有蜘蛛、目标 URL 的日誌里長期没有来自该入口的抓取,就要怀疑連結是否被指令挡住。
- 检查同目錄下的其他頁面,確認是單頁問题還是整個目錄或整站的問题。
一些實际處理建议
- 如果本意是让蜘蛛發現連結,就不要给入口頁加 nofollow,也不建议長期挂 noindex 再指望連結被顺走。
- 确實需要屏蔽抓取时,優先在 robots.txt 里寫清楚路径,职责更明确,也更方便以後排查。
- 修改服務器或 CDN 配置後,務必重新請求一次頁面確認头部已经變化,再去看日誌。
- 把响應头检查纳入入口頁上线的固定流程,和检查連結位置、狀態碼同級對待。
搜尋蜘蛛會不會跟踪入口頁上的目标連結,取决于抓取、索引、連結跟踪等多個环节的共同作用,X-Robots-Tag 只是其中一环。它不能保證連結一定被發現,但配置错誤时确實會让前面的工作白做,值得花几分钟確認一下。