搜尋抓取

noindex 之後蜘蛛為什么還會来抓:不索引與不抓取是两回事

给頁面加上 noindex 後,日誌里仍會出現抓取记錄,這让不少人困惑。本文說明 noindex 只作用于索引环节、不负责阻止抓取,並解释它與 robots.txt 的先後關系、noindex 頁面是否浪費抓取配額,以及一套可执行的自查清單。

搜尋抓取

noindex 之後蜘蛛為什么還會来抓:不索引與不抓取是两回事

给頁面加上 noindex,很多人的预期是“蜘蛛別再来了”。實际观察日誌會發現,被 noindex 的 URL 依然會出現抓取记錄,有时频率還不低。這不是蜘蛛没讀懂指令,而是 noindex 和“不抓取”本来就作用在不同环节。

noindex 管的是索引,不是抓取

蜘蛛處理一個 URL 大致會经過几步:發現地址、發起抓取、解析内容、决定是否索引、安排後續調度。noindex 是在“决定是否索引”這一步生效的指令,它告诉搜尋引擎:這個頁面可以看,但不要放進索引。抓取發生在它之前,並不會因為 noindex 而被取消。

所以日誌里出現 noindex 頁面的抓取记錄属于正常現象。真正决定蜘蛛来不来的,是 URL 有没有被發現、robots.txt 允不允许訪問、服務器能不能正常返回内容。

為什么蜘蛛還會反复抓 noindex 頁面

  • 頁面上的連結仍然存在,蜘蛛顺着内鏈多次發現它,抓取調度就會把它排進去。
  • 指令可能變化。今天 noindex,明天也许改回 index,蜘蛛需要定期复查才能及时响應。
  • 頁面本身有外鏈或一定訪問量时,蜘蛛會把它当成活跃 URL 對待。
  • 如果它還被寫在 Sitemap 里或通過接口提交,等于主動提醒蜘蛛這里有更新。
把 noindex 理解成“内容不许進索引”,而不是“URL 不许被訪問”,很多現象就说得通了。

noindex 與 robots.txt 的区別

想让蜘蛛彻底不来,常见做法是在 robots.txt 里 Disallow 掉對應目錄。但這两者有先後關系:robots.txt 是請求层面的拦截,蜘蛛被挡住後拿不到頁面内容,也就看不到頁面里的 noindex 标簽。

如果一個頁面同时被 robots.txt 屏蔽、又加了 noindex,搜尋引擎只能知道“這里禁止抓取”,無法確認 noindex。结果可能是:URL 因為外鏈等原因仍出現在索引里,但顯示為没有描述的條目。這種情况通常比單纯 noindex 更难處理。

較稳妥的顺序是:先让頁面可以被抓取,确保 noindex 能被讀到;等 URL 從索引中逐渐消失後,再考虑是否需要進一步用 robots.txt 拦截。

noindex 頁面會不會浪費抓取资源

會占用一部分,但不必過度紧張,影响主要取决于數量級。几個到几十個頁面,對抓取調度几乎没有感知;如果站内存在成千上萬個自動生成的 noindex 頁面,而且都有内鏈指向,蜘蛛的抓取配額就會被分走,正常頁面的抓取节奏可能變慢。

這種情况下更值得做的是减少這些頁面的入口,而不是只加 noindex。比如把無價值的篩選頁、參數頁從内鏈和 Sitemap 中去掉,让蜘蛛少發現它們。

自查清單

  1. 用日誌確認 noindex 頁面的抓取频率,判断是零星复查還是成規模反复抓。
  2. 检查 noindex 頁面是否還在 Sitemap 中,既然不打算索引,通常也没有必要繼續放在地图里。
  3. 確認没有出現“robots.txt 屏蔽加 noindex”的组合,尤其是被屏蔽目錄里的頁面标簽。
  4. 確認頁面返回的狀態碼正常。noindex 不需要配合 404 使用,返回 404 的頁面本身就不必再谈 noindex。

noindex 是索引层面的指令,它不负责切断抓取路径。想减少蜘蛛訪問,要從連結、Sitemap、robots.txt 這些入口和通路上解决;想控制索引,再用 noindex 表達。两者各管一段,混在一起用,問题往往出在中間那段没人管。