常见問题

入口頁响應头寫了 X-Robots-Tag: noindex,搜尋蜘蛛還會跟進里面的目标連結吗

很多人把“頁面不被收錄”和“頁面里的連結不被抓取”当成一回事。X-Robots-Tag: noindex 管的是前者,連結發現是另一套机制。本文說明 noindex、nofollow、noindex,nofollow 三種寫法的区別,讲清什么情况下目标 URL 仍會被發現、什么情况下會真的被截断,以及如何用日誌和响應头做驗證。

常见問题

入口頁响應头寫了 X-Robots-Tag: noindex,搜尋蜘蛛還會跟進里面的目标連結吗

這是蜘蛛池和站点运营里很常见的一個混淆点:不少人把“頁面不被收錄”和“頁面里的連結不被抓取”当成同一件事。實际上這是两個獨立环节,X-Robots-Tag 只處理前者。

先分清:索引和連結發現是两回事

蜘蛛抓到入口頁之後,會做两件不同的事:

  • 連結發現:解析 HTML,把頁面里的可解析連結提取出来,放進待抓取队列。
  • 索引:决定這個 URL 要不要進入搜尋结果,以及以什么形式出現。

X-Robots-Tag: noindex 的指令對象是第二條。它表達的是“別把我這個 URL 放進索引”,並没有说“不要讀我頁面里的連結”。所以從這個角度看,入口頁被标记 noindex,並不會直接切断里面目标連結的發現路径。

noindex 和 nofollow 是两種指令

真正會阻断連結跟進的是 nofollow。三種常见寫法的差別很大:

  • X-Robots-Tag: noindex —— 目前 URL 不進索引,頁面里的連結照常被解析和排队。
  • X-Robots-Tag: nofollow —— 不跟随目前頁面里的連結。
  • X-Robots-Tag: noindex, nofollow —— 两條同时生效,入口頁里的目标連結基本不會通過這個入口被發現。

如果入口頁本身不打算參與排名,只加 noindex 就够了,不要顺手再补一個 nofollow,否則等于亲手把入口掐掉。

為什么有人感觉“加了 noindex 蜘蛛就不来了”

常见原因往往和 noindex 的直接作用無關:

  1. 日誌誤讀。蜘蛛其實抓過入口頁,但時間窗没對上、IP 段没识別出来,或者只看了訪問量而没看来源。
  2. 抓取频次變化。站内長期堆积大量 noindex 頁面,整体若被判断為價值較低,抓取预算會收紧,間接拖慢目标 URL 被發現的节奏。
  3. 排查不完整。實际生效的是 nofollow、robots.txt 屏蔽或响應头被 CDN 覆盖,但只盯着 noindex 看。
  4. 目标 URL 自身有問题。返回 404、5xx、需要登入、被 robots.txt 屏蔽,都属于“發現了但抓不到”。

怎么驗證連結是否真的被跟進了

  • 先看入口頁這一侧:用 curl -I 確認真實返回头里到底是哪條指令,別只翻源碼里的 meta 标簽。
  • 再看目标 URL 這一侧:日誌里有没有對應的蜘蛛請求,時間点是否落在入口頁被抓之後。
  • 跨域連結要單獨確認:href 寫成可解析的完整地址,没有 rel=nofollow,也不是靠点击事件触發。
  • 在搜尋後台的抓取統計里观察目标 URL 是否進入過抓取队列。

几個容易忽略的细节

  • X-Robots-Tag 是响應头,CDN、反向代理、後端框架任意一层都可能追加或覆盖它,排查时以线上真實响應為准。
  • meta robots 和 X-Robots-Tag 同时出現时,通常更嚴格的那條生效。比如源碼寫 index、响應头寫 noindex,结果一般按 noindex 處理。
  • 入口頁返回 4xx 或 5xx 时,蜘蛛连頁面主体都拿不到,這时讨论 noindex 已经没有意义。
  • noindex 頁面仍然可以被其他頁面連結並作為中轉,它的“通道”角色並不受影响。
把 noindex 理解成“這個 URL 別進索引”,而不是“這個 URL 別被抓”,很多排查方向自然就顺了。

實操上的建议

入口頁如果本来就不打算參與排名,加 noindex 是相對干净的做法;但要让里面的目标 URL 有机會被發現,就別在同一层加 nofollow,也別用 JS 跳轉、iframe、隐藏元素去替代正常的 a href。真正决定目标 URL 會不會被抓的,是連結是否以可解析形式存在、目标地址本身是否可訪問,以及整站抓取预算是否够用。

另外提醒一句:連結被發現只是進入队列的第一步,後面還有抓取調度和内容层面的判断,發現了不等于一定會被抓,也不等于會在某個時間点出現。