谈到控制蜘蛛抓取,很多人先想到 robots.txt 和頁面里的 meta robots。但還有一條指令藏在 HTTP 响應头里,蜘蛛在拿到 HTML 之前就能讀到,它就是 X-Robots-Tag。它不负责吸引蜘蛛,也不保證收錄,只是把“這個响應该怎么處理”提前告诉抓取端。
X-Robots-Tag 和 meta robots 的先後差別
meta robots 寫在 HTML 的 head 里,蜘蛛需要先下载並解析頁面,才能看到它。X-Robots-Tag 放在 HTTP 响應头中,蜘蛛請求 URL 时随响應一起收到,时机更早。對于 PDF、图片、视频等非 HTML 文件,meta 标簽通常没有地方可放,X-Robots-Tag 就成了少數可用的指令入口。
两者不是互相替代的關系。如果同时存在,蜘蛛會综合處理;但配置不一致时,排查成本會變高。建议同一批 URL 只保留一種主要寫法,避免一個说 noindex、另一個说 index。
常见指令分別表達什么
- noindex:不要把该 URL 作為搜尋结果展示。注意,它不阻止蜘蛛抓取,只是影响索引。
- nofollow:不跟随该响應中的連結。蜘蛛仍可能抓取目前 URL,但頁面内連結的發現效率會受影响。
- none:相当于 noindex 與 nofollow 同时生效。
- noarchive:不提供缓存版本入口。
- nosnippet:不在搜尋结果中展示摘要片段。
- max-snippet、max-image-preview:限制摘要長度或图片预览尺寸。
- unavailable_after:指定某個時間後不再展示该頁面。
這些值可以组合,也可以针對特定蜘蛛寫。寫法通常是在响應头里加一條 X-Robots-Tag,後面跟指令和值。不同服務器的配置方式不同,改完後要用實际响應驗證。
對抓取路径和連結發現的影响
如果只在响應头里寫 noindex,蜘蛛仍然會請求這個 URL。它會消耗一次抓取,只是最终不把頁面放進索引。若這個 URL 還被大量内鏈指向,蜘蛛會沿着内鏈反复走到這里,抓取路径的效率就會下降。
如果寫 nofollow,目前頁面里的連結可能不再被跟随。對依赖内鏈發現新 URL 的站点来说,重要栏目和詳情頁之間尽量不要用 nofollow 切断路径。真正需要阻止抓取的目錄,更合适的方式是用 robots.txt 或訪問控制,而不是只靠 noindex。
按目錄和按蜘蛛定向
X-Robots-Tag 的優势之一是可以按目錄批量配置。比如測試目錄、後台附件目錄、临时活動頁,可以在服務器层统一加 noindex,不必逐個頁面改模板。也可以针對特定蜘蛛寫指令,但 User-Agent 可以被伪装,定向規則更适合作為补充,不适合当作安全邊界。
還要注意 CDN 和反向代理。如果响應头在邊缘节点被覆盖或缓存,蜘蛛看到的指令可能和你本地測試不同。改完後最好從公網請求一次,確認最终返回的头信息。
和 Sitemap、内鏈怎么配合
Sitemap 里提交的 URL 如果返回 noindex,蜘蛛可能仍會抓取,但不會索引。這會占用抓取资源,也容易让运营誤以為“已经提交就萬事大吉”。定期對比 Sitemap 列表和响應头,把不该出現的 URL 清理掉,比反复提交更有效。
内鏈同样要检查。指向 noindex 頁面的連結越多,蜘蛛在站内绕路的概率越高。把重要路径留给需要被抓取和索引的頁面,會让抓取路径更清晰。需要提醒的是,這些操作只是减少無效抓取,並不承诺收錄速度或排名變化。
怎么確認指令已经生效
- 用命令行請求頁面,查看响應头中是否出現 X-Robots-Tag。
- 在浏览器開發者工具的 Network 面板里看 Response Headers。
- 對照服務器日誌,確認蜘蛛請求时返回的也是同一套头信息。
- 在搜尋平台的 URL 检查工具里查看抓取到的頁面信息,辅助判断索引狀態。
X-Robots-Tag 是抓取和索引阶段的补充指令,不是排名工具。把它用在對的地方,能减少蜘蛛走错路;把它当成萬能開關,反而容易制造新的抓取問题。
總结来说,X-Robots-Tag 的價值在于“更早、更批量、對非 HTML 文件也有效”。部署前想清楚目的是阻止抓取、阻止索引,還是控制摘要展示;部署後用真實响應核對。保持指令一致,内鏈和 Sitemap 不互相打架,蜘蛛的抓取路径才會更顺。