站点运营

站点运营:X-Robots-Tag 响應头自查,別让蜘蛛在看不到的地方被拦下

很多站点只检查 robots.txt 和頁面里的 meta robots,却忽略了 HTTP 响應头中的 X-Robots-Tag。它由服務器、CDN 或框架生成,能對一整類资源生效,配置出错时波及面更大。本文梳理常见的誤伤场景,並给出可执行的响應头自查步骤。

站点运营

站点运营:X-Robots-Tag 响應头自查,別让蜘蛛在看不到的地方被拦下

很多站点把注意力放在 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:限定摘要長度或頁面失效時間。

正因為它可以针對一整類资源生效,用好了省事,用错了也更容易波及一大片。

常见的几種誤伤

  1. 為了挡住測試环境,在服務器或 CDN 上全局加了一行 noindex,正式上线後忘了去掉。
  2. 只想减少低质量附件被索引,结果把产品手册、白皮书這類有價值的 PDF 一起挡在了外面。
  3. 安全插件、WAF 或防采集規則在拦截爬虫时顺带加上了 noindex,甚至直接返回 403。
  4. 多套环境共用一份配置,測試环境的响應头跟着同步到了生产环境。
  5. 改版迁移後,舊規則還留在 Nginx 或 Apache 的 location 块里,没人清理。

自查可以這样做

  1. 挑代表性 URL:首頁、栏目頁、詳情頁、分頁、PDF、图片、JS 和 CSS、接口頁各取几個。
  2. 用 curl -sI 带上常见爬虫 UA 分別請求,观察响應头里是否有 X-Robots-Tag。
  3. 對比本地、源站 IP、CDN 节点三種路径的返回结果,確認是否一致。
  4. 把响應头與頁面里的 meta robots 放在一起看,確認两者没有互相打架。
  5. 翻一遍訪問日誌,看被限制的 URL 是否原本有稳定的抓取记錄。
多個 X-Robots-Tag 头會合並,冲突时通常更嚴格的那條占上風;值不区分大小寫,但不同指令叠加後可能产生意料之外的结果,所以不要靠猜来判断最终生效的是什么。

修复與長期维護

  • 改動响應头前先记錄目前配置,改完用同一批 URL 复测一遍。
  • 把响應头检查寫進上线清單,尤其是換 CDN、換服務器、換框架的时候。
  • 用一個简單的定时任務定期抓取關键 URL,發現異常及时告警。
  • 明确谁有權修改這一层配置,避免多人各自加規則、互相覆盖。
  • 如果只是測試环境需要限制,尽量用訪問密碼或 IP 白名單,而不是依赖 noindex。

X-Robots-Tag 不是必须用的東西,但一旦用上,它就是一種沉默的指令。花十分钟把關键 URL 的响應头過一遍,比事後反复猜测為什么某些頁面不收錄要省事得多。