很多站点在 robots.txt 和 meta robots 之外,還會忽略 HTTP 响應头里的 X-Robots-Tag。它和 meta 标簽作用類似,但作用范围更广,可以针對非 HTML 资源、目錄、甚至整個域名下發指令。配置得当能减少無效抓取,配置失誤則可能让搜尋蜘蛛在抓取路径上直接绕行。本文按排查顺序梳理常见誤用和核對方法。
先理解 X-Robots-Tag 的生效范围
X-Robots-Tag 通過 HTTP 响應头下發,常见值包括 noindex、nofollow、noarchive、nosnippet 等,也可以寫成 none。它既可以出現在 HTML 頁面响應中,也可以出現在图片、PDF、JS、CSS 等非 HTML 资源上。
- noindex:提示不要將 URL 作為搜尋结果展示,但搜尋蜘蛛仍可能抓取该 URL。
- nofollow:提示不要追踪頁面中的連結,可能影响内鏈路径的發現。
- none:等價于 noindex 與 nofollow 同时生效,影响范围較大。
注意:X-Robots-Tag 不能替代 robots.txt 的抓取禁止。要阻止抓取,應優先使用 robots.txt;要控制索引展示,才考虑 noindex。
常见誤用與入口拦截表現
1. 全站或大目錄誤加 noindex
服務器或 CDN 配置中一條通配規則,可能让整站頁面都带上 noindex。表現是頁面仍被抓取,但索引量逐步下降,站点地图中的 URL 被大量排除。排查时先看响應头,再看服務器配置和 CDN 規則,確認是否有人為了临时下线而添加後忘记移除。
2. 對静態资源批量加 noindex
给图片、JS、CSS 加 noindex 通常没有實际意义,因為搜尋引擎一般不會把這些资源作為普通網頁索引。但批量添加會干扰响應头核對,也容易把規則誤扩散到 HTML 頁面。建议只對确實需要控制的頁面類型設定,不要图省事按文件扩展名一刀切。
3. 目錄級 nofollow 阻断内鏈發現
如果某個栏目目錄被统一加上 nofollow,该目錄下頁面里的連結可能不再被追踪,新 URL 的發現路径會變窄。表現是栏目内頁被抓取數量减少,新頁面首次抓取時間拉長。此时要检查服務器配置、應用中間件、安全插件是否自動给目錄响應头追加了 nofollow。
4. 多值冲突與 CDN 覆盖
同一個 URL 可能同时存在 meta robots 和 X-Robots-Tag,两者值不一致时,限制更嚴格的一方通常更容易生效。另外,源站配置被 CDN 邊缘規則覆盖,也會導致不同节点返回的响應头不同。排查时要分別從源站和 CDN 节点取响應头對比。
排查顺序
- 取响應头:用 curl -I 或浏览器開發者工具查看目标 URL 的完整响應头,確認是否存在 X-Robots-Tag 及其值。
- 按路径分层:分別检查首頁、栏目頁、詳情頁、静態资源、API 路径,判断影响范围是單頁、目錄還是全站。
- 對比不同节点與 UA:從源站直连和 CDN 节点各取一次,模拟搜尋蜘蛛 UA 再取一次,排除邊缘节点缓存或差异化下發。
- 检查多层配置:依次核對服務器配置、應用框架中間件、安全插件、CDN 規則,找到具体是哪一层添加了该响應头。
- 核對 robots.txt 與 meta:確認 X-Robots-Tag 是否與 robots.txt、meta robots 冲突,避免多個指令互相覆盖。
修复與观察
修复时建议精准設定,避免使用全站通配。需要保留抓取但去掉索引的頁面,可以用 noindex;需要阻断連結追踪的頁面,才考虑 nofollow。静態资源一般不需要額外添加索引控制头。修改後先在不同节点复核响應头,確認最终下發的值一致,再观察日誌。
- 通過服務器日誌观察相關路径的抓取频次、狀態碼和回訪間隔。
- 關注站点地图中 URL 的抓取覆盖變化,但不要把它当作實时反馈。
- 如果只是索引狀態變化,恢复通常需要几天到几周,期間避免频繁改動配置。
最後提醒:X-Robots-Tag 是响應头級別的指令,容易在服務器、應用、CDN 多层配置中产生冲突。每次調整後,用不同 UA 和不同节点各取一次响應头,確認最终下發的值一致,再观察抓取路径是否恢复。不要用 noindex 来阻止抓取,也不要用 nofollow 来精确控制抓取预算,這两類目标更适合交给 robots.txt 和站点结构来處理。