網站收錄

被 robots.txt 挡住的 URL,為什么還能在索引里看到

robots.txt 管的是抓取,不是收錄。本文說明被 Disallow 的地址為何仍可能出現在索引里、只留 URL 的空條目是怎么形成的,以及 disallow 與 noindex 同时使用时會出什么問题,並给出让頁面真正登出索引的處理顺序。

網站收錄

被 robots.txt 挡住的 URL,為什么還能在索引里看到

做站点运营时经常會遇到一個矛盾現象:某個目錄已经在 robots.txt 里寫了 Disallow,過一段時間用 site: 查,還是能看到里面的 URL。這不是蜘蛛不守規則,而是抓取和收錄本来就是两道不同的门,用一把钥匙開不了两把鎖。

先分清两道门:抓取與索引

robots.txt 约束的是抓取——蜘蛛能不能来讀取這個 URL 的内容。能不能進入索引,則由 noindex 指令、頁面内容质量、重复情况等信号决定。一個 URL 即使内容被挡在外面讀不到,也可能因為被別處連結指向,在索引里留下一個條目。所以「挡住蜘蛛」和「不進索引」之間,並不能画等号。

被挡住的 URL 為什么還會進索引

常见来源有這几種:

  • 站内其他頁面或外部網站有連結指向它,蜘蛛顺着連結知道了這個地址;
  • 站点的 sitemap 里仍然包含该 URL,或者曾经通過工具主動提交過;
  • 頁面里的連結能從 HTML 或脚本中被解析出来,地址因此被發現;
  • 早期抓取时已经建立了记錄,索引條目没有因為後来加的 disallow 自動消失。

這類條目通常比較空:可能只有 URL,标题来自锚文本,没有描述,用戶点進去也看不到内容。對搜尋体驗和站点形象都没有好處。

三種常见的誤用

用 robots.txt 處理「不想被搜到的頁面」

如果目的是让頁面不出現在索引里,正确做法是 noindex(頁面需要允许抓取,蜘蛛才能讀到這條指令),或者用 HTTP 响應头里的 X-Robots-Tag。真正麻烦的组合是同时 disallow 和 noindex:蜘蛛進不来,讀不到 noindex,反而可能让索引里的舊條目長期留着。

用 disallow 屏蔽重复内容

參數頁、篩選頁、打印頁這類近似頁面,更合适的處理是 canonical 指向主版本,或做 301 合並,必要时用參數處理工具。用 disallow 挡住,只是让蜘蛛不再讀,重复信号並不會因此消失。

想靠 robots 控制收錄數量

索引里的 URL 數量最终取决于内容质量與規范化程度。robots.txt 能减少抓取,但不等于减少收錄,两者不要混用。

一個可以照着走的排查顺序

  1. 先確認這個 URL 到底在不在索引里,用 site: 查询或 URL 检查工具驗證,不要只看日誌。
  2. 检查是否同时存在 disallow 與 noindex 的组合,這是最常见的死结。
  3. 如果确實要移除,先放開抓取,让 noindex 能被讀到,再等蜘蛛重新抓取後评估。
  4. 紧急情况下可以用临时移除工具做短期下架,但它是临时的,不能当作長期方案。
  5. 長期靠規范化、合並重复、提升内容價值来减少不该被索引的 URL。

和抓取配額的關系

disallow 的價值在于省下抓取配額,把蜘蛛的訪問留给真正重要的頁面。代價是失去對這批 URL 索引狀態的控制,也看不到内容是否更新。後台目錄、搜尋结果頁、大量無内容參數頁可以這样處理;有搜尋價值的頁面不要轻易屏蔽。

一句话總结:robots.txt 管的是「能不能来讀」,noindex 管的是「能不能進索引」,两者不能互相替代。

日常巡检时,可以定期把 robots.txt 里的屏蔽目錄和索引里的 URL 對一遍。發現被挡住的地址仍然出現在结果里,先判断是連結發現導致的歷史遗留,還是指令组合寫错了,再决定是放開抓取加 noindex,還是繼續维持屏蔽。動作分開做,問题會清晰很多。