很多站点把注意力放在 robots.txt 和頁面里的 meta robots 上,却忽略了一個更隐蔽的位置:HTTP 响應头里的 X-Robots-Tag。它不寫在 HTML 里,用浏览器正常浏览时也看不见,但它同样能告诉搜尋引擎某個 URL 或某類文件该怎么處理。一旦配置出错,影响范围往往比單頁面里的 meta 标簽更大。
它為什么容易被漏掉
X-Robots-Tag 由服務器、反向代理、CDN 或應用框架生成,不在模板文件里,也不在 CMS 的編輯界面里。做站内自查时,很多人习惯搜尋 HTML 源碼,而响應头根本搜不到。等到發現某些頁面長期不收錄,才會回头怀疑是不是哪一层加了限制。
它能做哪些事
- noindex:不索引目前 URL,可用于 PDF、图片或整類由同一後端輸出的頁面。
- nofollow:不追踪该响應中的連結。
- noarchive / nosnippet:控制是否提供快照、摘要。
- noimageindex:控制图片是否進入图片搜尋。
- max-snippet、unavailable_after:限定摘要長度或頁面失效時間。
正因為它可以针對一整類资源生效,用好了省事,用错了也更容易波及一大片。
常见的几種誤伤
- 為了挡住測試环境,在服務器或 CDN 上全局加了一行 noindex,正式上线後忘了去掉。
- 只想减少低质量附件被索引,结果把产品手册、白皮书這類有價值的 PDF 一起挡在了外面。
- 安全插件、WAF 或防采集規則在拦截爬虫时顺带加上了 noindex,甚至直接返回 403。
- 多套环境共用一份配置,測試环境的响應头跟着同步到了生产环境。
- 改版迁移後,舊規則還留在 Nginx 或 Apache 的 location 块里,没人清理。
自查可以這样做
- 挑代表性 URL:首頁、栏目頁、詳情頁、分頁、PDF、图片、JS 和 CSS、接口頁各取几個。
- 用 curl -sI 带上常见爬虫 UA 分別請求,观察响應头里是否有 X-Robots-Tag。
- 對比本地、源站 IP、CDN 节点三種路径的返回结果,確認是否一致。
- 把响應头與頁面里的 meta robots 放在一起看,確認两者没有互相打架。
- 翻一遍訪問日誌,看被限制的 URL 是否原本有稳定的抓取记錄。
多個 X-Robots-Tag 头會合並,冲突时通常更嚴格的那條占上風;值不区分大小寫,但不同指令叠加後可能产生意料之外的结果,所以不要靠猜来判断最终生效的是什么。
修复與長期维護
- 改動响應头前先记錄目前配置,改完用同一批 URL 复测一遍。
- 把响應头检查寫進上线清單,尤其是換 CDN、換服務器、換框架的时候。
- 用一個简單的定时任務定期抓取關键 URL,發現異常及时告警。
- 明确谁有權修改這一层配置,避免多人各自加規則、互相覆盖。
- 如果只是測試环境需要限制,尽量用訪問密碼或 IP 白名單,而不是依赖 noindex。
X-Robots-Tag 不是必须用的東西,但一旦用上,它就是一種沉默的指令。花十分钟把關键 URL 的响應头過一遍,比事後反复猜测為什么某些頁面不收錄要省事得多。