搜尋抓取

noindex 不等于让蜘蛛別来:被排除收錄的 URL 该怎么處理

noindex 和 robots.txt 的 disallow 经常被当成同一件事,實际作用阶段完全不同。本文說明哪些頁面适合保留抓取、只做收錄排除,哪些更适合直接阻断請求,以及两者叠用时常见的失效顺序,並给出一份可执行的检查清單。

搜尋抓取

noindex 不等于让蜘蛛別来:被排除收錄的 URL 该怎么處理

很多站点在清理低價值頁面时,會在两個動作之間犹豫:一是加 noindex,二是在 robots.txt 里 disallow。看上去都在表達「我不想让這個頁面出現在搜尋结果里」,但對搜尋蜘蛛来说,這是两件不同的事。前者的前提是蜘蛛已经進来了,後者是让蜘蛛根本進不来。

noindex 生效的前提,是頁面先被抓取

noindex 只是一個寫在 HTML 的 meta 标簽,或者寫在 HTTP 响應头里的指令。蜘蛛必须真正請求這個 URL、拿到响應、讀到這條指令,才會把它记下来。也就是说,noindex 的頁面依然會消耗抓取资源,依然會出現在服務器日誌里。

而 disallow 是在抓取之前就生效的:蜘蛛讀完 robots.txt 之後,多數情况下不會再去請求這個路径。代價是,如果這個 URL 已经被處理過,蜘蛛無法再進入頁面讀到 noindex,後續判断只能依赖其他信号,周期通常更長。

哪些頁面适合 noindex,但保留抓取

  • 站内搜尋结果頁:内容由用戶輸入决定,地址數量趋于無限,但每一條结果本身往往指向站内已有的正常頁面。
  • 标簽頁、分類归档靠後的翻頁:有一定導航價值,但同质化嚴重。
  • 用戶中心、訂單頁、後台入口:不需要被索引,但蜘蛛能從外鏈或歷史记錄里找到,讀到 noindex 後可以更快停止回訪。
  • 重复内容的變体:打印版、獨立移動域名、參數化排序頁等。

這些頁面的共同点是:數量相對可控,或者本身就是站内連結结构的一部分。让蜘蛛讀到 noindex,判断會更干净,也不會平白丢掉頁面上的出鏈。

哪些情况更适合直接阻断抓取

  • 參數组合爆炸的篩選頁,比如多條件叠加生成的地址,數量没有上限。
  • 内部接口、JSON 輸出、調试地址,這些本来就不该被当成頁面處理。
  • 測試环境、灰度环境,如果和线上處在同一個域名下。

這類地址如果只加 noindex,蜘蛛仍然會一次次請求,抓取资源被摊薄。此时用 robots.txt 或者服務器层的訪問控制更合适。

最常见的错誤:disallow 之後指望 noindex 生效

如果頁面已经被 disallow 挡住,蜘蛛讀不到頁面里的 noindex;如果頁面没有被挡住,noindex 才能被讀到。這两個指令叠在一起,通常得不到「既不被抓也不被收錄」的干净结果,而是留下一個模糊的中間狀態。

比較稳妥的顺序是:先撤掉 disallow,让頁面可以被抓取,加上 noindex,等蜘蛛确實讀到之後,再考虑用 robots.txt 挡住抓取。中間這段時間頁面可能仍會出現在结果里,属于正常過渡,不必急着反复改動規則。

noindex 與 nofollow 不要混用

noindex 管的是這個 URL 本身要不要出現在结果里,nofollow 管的是頁面上的連結還要不要被繼續跟踪。给一個頁面加 noindex,並不代表它的出鏈會被忽略。如果這個頁面上有大量指向站外或低质量地址的連結,nofollow 是另一個需要單獨考虑的動作。

反過来,一個頁面即使被 noindex,它上面的内鏈依然可能帮助蜘蛛發現其他 URL。這也是為什么一些站点宁愿让這些頁面繼續被抓取,而不是一刀切地屏蔽。

非 HTML 资源怎么办

如果目标不是 HTML 頁面,比如 PDF、图片,或者由接口返回的文件,meta 标簽没有地方可寫,就要用 HTTP 响應头里的 X-Robots-Tag。它和 meta 的作用類似,但覆盖面更广,也更适合在服務器或 CDN 层统一配置。

落地时的检查顺序

  1. 先列出真正需要排除的 URL 類型,按「數量是否可控」分成两堆。
  2. 數量可控的加 noindex,同时確認這些頁面没有被 robots.txt 挡住。
  3. 數量不可控的走 robots.txt 或机房层的規則,並检查是否存在需要清理的歷史入口。
  4. 確認 noindex 是寫在 meta 還是响應头里,避免两處互相冲突。
  5. 观察一段時間的服務器日誌,看這些路径的請求是否按预期變化。

最後一点提醒:noindex 是针對具体 URL 的,不是针對模板的。同一個模板渲染出来的頁面,有的需要排除,有的需要保留,就要在輸出层做判断,而不是在模板里一刀切。規則改完之後,给蜘蛛留出重新讀取的時間,比频繁調整更容易得到稳定的结果。