给頁面加上 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 中去掉,让蜘蛛少發現它們。
自查清單
- 用日誌確認 noindex 頁面的抓取频率,判断是零星复查還是成規模反复抓。
- 检查 noindex 頁面是否還在 Sitemap 中,既然不打算索引,通常也没有必要繼續放在地图里。
- 確認没有出現“robots.txt 屏蔽加 noindex”的组合,尤其是被屏蔽目錄里的頁面标簽。
- 確認頁面返回的狀態碼正常。noindex 不需要配合 404 使用,返回 404 的頁面本身就不必再谈 noindex。
noindex 是索引层面的指令,它不负责切断抓取路径。想减少蜘蛛訪問,要從連結、Sitemap、robots.txt 這些入口和通路上解决;想控制索引,再用 noindex 表達。两者各管一段,混在一起用,問题往往出在中間那段没人管。