網站收錄

robots.txt 拦住了抓取,索引里為什么還留着這些 URL

被 robots.txt 屏蔽的路径,日誌里看不到抓取,索引里却仍有 URL。這不是蜘蛛不守規矩,而是抓取與收錄本来是两回事。本文拆開讲清两者的邊界、几種常见誤判,以及让頁面真正登出索引的處理顺序與自查清單。

網站收錄

robots.txt 拦住了抓取,索引里為什么還留着這些 URL

有人做過一轮站点清理,把不想要的目錄寫進 robots.txt 的 Disallow,日誌里确實看不到蜘蛛来抓了,但過一段時間去查索引,那些 URL 還在。于是又怀疑規則没生效,或者蜘蛛不守規矩。多數情况下,問题不在执行,而在對 robots.txt 的理解。

robots.txt 管的是抓取,不是收錄

robots.txt 的作用是告诉蜘蛛“這個路径不要抓”。它不负责把已经進入索引的 URL 删掉,也不负责阻止 URL 進入索引。一個 URL 能進索引,不一定需要蜘蛛拿到頁面正文:從外鏈、sitemap、内鏈、歷史记錄里知道這個地址存在,就足够让它出現在索引里,只是没有标题、没有摘要、没有快照,用戶点進去也可能打不開。

所以看到“被屏蔽但被收錄”,先分清两件事:蜘蛛是否在抓(看日誌),URL 是否在索引(看索引狀態)。這两條线本来就可能不一致。

几種常见的誤判

  • 只屏蔽了目錄,没覆盖到具体 URL:Disallow: /tag/ 與 Disallow: /tag 的范围不同,寫错會让本想挡住的地址繼續被抓。
  • 屏蔽了 A 路径,URL 却從 B 路径被带出来:内鏈、外鏈、sitemap 里仍有完整地址,蜘蛛不抓也能知道它存在。
  • 規則生效有延迟:不同抓取工具的缓存時間不一样,改完立刻看结果,容易得出错誤结论。
  • 規則只针對某個 UA 寫:其他 UA 依然會抓,日誌里看起来“還在訪問”。

正确的處理顺序

如果目标是让頁面彻底從索引里消失,robots.txt 通常不是第一個该動的工具,顺序反過来才更好用:

  1. 先確認頁面可以被抓取。noindex 需要蜘蛛讀到頁面上的 meta 或响應头才會生效,如果 robots.txt 把整條路径挡死,蜘蛛讀不到 noindex,刪除指令也就無從谈起。
  2. 在頁面上加 noindex,或者對整批不需要的地址返回 X-Robots-Tag 响應头。等它被重新抓取後,索引狀態會逐步變成“已排除”,這個過程可能需要數周,取决于抓取频率。
  3. 確認已從索引移除後,再考虑用 robots.txt 减少抓取消耗。這时屏蔽只影响抓取,不影响收錄狀態。
  4. 如果涉及敏感或紧急内容,用各家的 URL 移除工具做临时處理,它有時間限制,別当成長期方案。
顺序记反了,就會得到“屏蔽了還收錄、noindex 也没生效”的双重困惑,其實是從第一步就断了鏈路。

自查清單

  • 日誌里是否還有该路径的抓取记錄,抓的是哪個 UA。
  • robots.txt 是否可正常訪問、返回 200,没有被 CDN 或防火墙拦截。
  • 規則是否寫成了相對路径,通配符位置是否造成誤伤。
  • 頁面返回碼是 200 還是 404/410,後者本身也有清理效果。
  • 是否同时存在 canonical、noindex、robots 三套指令互相覆盖。

顺手要避免的做法

為了省抓取预算,把整個目錄粗暴屏蔽,往往會把需要收錄的頁面一起挡掉。更稳妥的做法是按目錄和頁面類型分配合适的信号:该收的放開抓取、给出内鏈和 sitemap;不该收的用 noindex 收口;最後才用 robots.txt 控制抓取量。屏蔽是省资源的工具,不是清理索引的工具。