常见問题

入口頁的 X-Robots-Tag 和 Content-Type 寫错了,搜尋蜘蛛還會跟連結吗

很多站長只检查 HTML 里的 meta 标簽,却忽略了 HTTP 响應头。本文說明 X-Robots-Tag 中的 noindex 與 nofollow 對連結發現的不同影响,Content-Type、Content-Disposition 配置错誤會導致蜘蛛不解析頁面連結,並给出一份可落地的响應头自查清單和核對方法。

常见問题

入口頁的 X-Robots-Tag 和 Content-Type 寫错了,搜尋蜘蛛還會跟連結吗

聊蜘蛛池入口頁时,大家习惯盯着 HTML 里的 meta 标簽和連結寫法,却容易忽略一件事:搜尋蜘蛛在讀到 HTML 之前,先讀的是 HTTP 响應头。响應头里的 X-Robots-Tag、Content-Type 這些字段,會直接影响它接下来怎么處理這份文档。

一、X-Robots-Tag 和 meta robots 不是一回事

meta robots 寫在 HTML 里,只有蜘蛛把頁面下载並解析到那一段才會生效;X-Robots-Tag 寫在 HTTP 响應头里,蜘蛛一拿到响應就能看到,不需要解析正文。對于非 HTML 文件,比如 PDF、图片、JS 文件,meta 标簽没法寫,X-Robots-Tag 往往是唯一能下發指令的地方。

也正因為生效更早,响應头里的配置一旦寫错,影响面通常比 meta 更大。常见的错誤寫法包括反向代理层统一加了一條 X-Robots-Tag: noindex,或者 CDN 的預設規則批量注入了 nofollow

二、noindex 會不會挡住連結跟踪

這里需要区分两件事:收錄和連結發現。noindex 表達的是“不要把這個 URL 放進索引”,它本身並不等同于爬虫不能繼續解析頁面里的連結。真正會阻断連結跟進的,是 nofollow,或者 none 這類组合指令。

所以實际會出現這样的現象:入口頁带了 noindex,蜘蛛仍然抓取了它,也顺着連結發現了目标 URL,但入口頁自己不出現在搜尋结果里。這不算故障,只是一種策略選擇。反過来,如果响應头寫的是 X-Robots-Tag: noindex, nofollow,那連結跟進這條通道基本就断了。

自查思路:先確認你要的是“入口頁不進索引但仍能被用来發現 URL”,還是“彻底不要繼續跟進”。這两種目标對應的字段寫法完全不同,別混着配。

三、Content-Type 不對,蜘蛛可能根本不解析連結

蜘蛛要不要把响應体当成 HTML 来解析,很大程度取决于 Content-Type。响應头寫成 text/plain、application/json 甚至缺失时,多數情况下它只會把内容当成一段文本,而不會去提取里面的 a 标簽。

這類問题在蜘蛛池里並不罕见,因為入口頁常常挂在反代、對象存储或自建脚本後面,預設把内容按纯文本吐出。頁面在浏览器里看着正常,因為浏览器容错能力强,蜘蛛那邊却什么連結都没拿到。

配套的還有 Content-Disposition。如果响應头里带了 attachment,语义上就是让客戶端下载文件,蜘蛛通常不會把它当網頁處理。

四、值得逐項检查的响應头

  • X-Robots-Tag:確認有没有被網關、CDN、WAF 批量注入 noindex 或 nofollow。
  • Content-Type:入口頁應為 text/html; charset=utf-8,注意字符集声明要和實际编碼一致。
  • Content-Disposition:不應出現 attachment。
  • Location 與狀態碼:301、302 要配 Location;返回 200 却带 Location,容易让抓取判断混乱。
  • Cache-Control 與 Vary:缓存策略會導致不同节点、不同 UA 拿到不同版本,影响你判断“蜘蛛看到的到底是哪一版”。
  • Refresh:少數老服務仍會下發 HTTP 层的 Refresh 跳轉,行為不如标准跳轉稳定,建议改成 301 或 302。

五、怎么確認蜘蛛實际看到的响應头

  1. 用命令行直接看响應头:curl -I -A “對應蜘蛛 UA” 入口頁 URL,再換成普通浏览器 UA 對比一次。
  2. 分別從不同节点、不同網絡环境請求,排查 CDN 回源差异。
  3. 把抓到的响應头和你自己在浏览器開發者工具 Network 面板里看到的结果對照,重点看 X-Robots-Tag 和 Content-Type。
  4. 在搜尋平台的抓取分析工具里查看實际抓取结果,確認返回的狀態碼和内容類型是否與预期一致。

日誌里如果反复出現“抓取成功但從未發現新 URL”的情况,優先怀疑這一层,而不是急着去加更多入口頁。

六、给运营同学的建议

把响應头当成入口頁上线前的一道检查項,和标题、連結寫法放在同等位置。入口頁數量多的时候,最好在模板或網關层统一配置,避免個別頁面漏配或誤配。任何“批量加一個头试试”的改動,先在少量 URL 上驗證,再全量放開,改動前後都留一份响應头對照记錄,出了問题才追得回去。