搜尋抓取

被 noindex 的頁面,蜘蛛為什么還會来抓

很多人把 noindex 当成不让蜘蛛訪問的開關,其實它只影响索引,不阻断抓取。被 noindex 的 URL 仍可能通過内鏈、Sitemap 或歷史记錄被訪問,繼續消耗抓取预算。本文說明抓取與索引的区別,以及想让蜘蛛少来时,robots.txt 和狀態碼應该怎么配合。

搜尋抓取

被 noindex 的頁面,蜘蛛為什么還會来抓

在站点运营中,noindex 常被当成一個“別抓我”的開關。實际上它管的是索引,不是抓取。蜘蛛是否来訪問,取决于它能不能發現這個 URL,以及服務器是否允许连接。理解這一点,能避免很多不必要的抓取浪費。

抓取和索引不是同一件事

搜尋蜘蛛的工作大致分两步:先抓取頁面,再把内容送去索引。抓取是取回 HTML,索引是判断這個頁面要不要出現在搜尋结果里。noindex 作用在第二步,它告诉搜尋引擎“内容可以讀,但不要收錄”。

所以,一個頁面加上 noindex,不等于蜘蛛不會訪問。蜘蛛仍然可能来抓,只是抓到之後不會把它放進索引。如果頁面本身有内鏈指向,或者出現在 Sitemap 里,被抓的概率並不會因為 noindex 而降到零。

蜘蛛為什么還會訪問 noindex 頁面

常见原因有几個:

  • 内鏈仍然存在:導航、正文、相關推荐里的連結,蜘蛛會顺着爬。
  • Sitemap 或外鏈的發現通道:如果 URL 還在清單里,或被外部引用,蜘蛛仍可能知道它。
  • 歷史抓取记錄:之前抓過的 URL 會留在队列里,回訪並不奇怪。
  • 站点结构變化:頁面改了 meta,但連結没清理,蜘蛛按舊路径繼續訪問。

這些訪問會消耗抓取预算。對内容量大的站点来说,大量低價值頁面被反复抓取,可能挤占真正需要更新的頁面。

想让蜘蛛少来,應该怎么做

關键是分清目的:如果只是不想让頁面出現在搜尋结果里,用 noindex 就够了;如果连抓取都不想让它發生,才考虑 robots.txt 或服務器层面的限制。

  1. 只想移除索引:保持頁面可抓取,設定 noindex。等蜘蛛重新抓取並看到标簽後,頁面會逐步從索引中移除。如果頁面已经不存在,返回 404 或 410 也可以。
  2. 不想被索引,也不想被频繁抓取:先確認是否真的不需要任何搜尋引擎訪問。robots.txt 禁止抓取後,蜘蛛讀不到 noindex,已索引的頁面可能仍會保留一段時間。更稳妥的做法通常是允许抓取並 noindex,等索引移除後再考虑限制抓取。
  3. 頁面只對登入用戶開放:不要用 noindex 当訪問控制。未登入蜘蛛看到的是登入頁或空内容,容易产生誤解。用狀態碼或權限控制更直接。
把 noindex 当索引控制,把 robots.txt 当抓取控制,两者不要混用。顺序弄反,容易出現“想删的没删掉,想留的也没抓全”。

容易被忽略的 noindex 使用场景

分頁和篩選頁

列表頁的分頁、排序參數组合出的 URL,如果内容重复度高,可以用 noindex 减少索引负担。但注意,不要因為 noindex 就放任這些 URL 被大量抓取,内鏈和參數治理仍然要做。

站内搜尋结果頁

站内搜尋生成的頁面通常不建议索引,也不建议让蜘蛛深挖。可以用 noindex,並配合 robots.txt 禁止抓取搜尋參數,减少無效訪問。

临时頁和打印頁

活動頁、打印版、彈窗落地頁,如果只是短期存在,加 noindex 可以避免它們進入索引。頁面下线後,返回 404 或 410 比長期保留一個空頁面更干净。

從日誌里看實际效果

設定 noindex 後,可以在服務器日誌里观察這些 URL 的訪問频率。如果一段時間後仍然频繁出現,检查内鏈、Sitemap 和外部連結是否還在指向它們。抓取频率没有明顯下降,說明發現通道没有收窄,單靠 noindex 解决不了抓取预算的問题。

站点运营里,noindex 是一個细粒度的索引開關,不是萬能拦截器。把它和 robots.txt、狀態碼、内鏈清理配合使用,才能让蜘蛛把有限的抓取次數用在更值得的頁面上。