網站收錄

robots.txt 挡住的 URL 還在索引里:抓取限制不等于收錄移除

robots.txt 寫了 Disallow,结果頁里却還能看到那條 URL,原因通常是抓取限制和收錄移除被混為一谈。本文区分两者的作用范围,說明 Disallow 與 noindex 叠加為什么會互相抵消,並给出按實际需求選擇屏蔽、noindex、404 或 301 的判断顺序與观察节奏。

網站收錄

robots.txt 挡住的 URL 還在索引里:抓取限制不等于收錄移除

在索引报告里看到一批本该被屏蔽的 URL,回头检查 robots.txt 明明寫了 Disallow,這是不少人遇到過的场景。問题通常不在于規則寫错了,而在于把“不允许抓取”和“不允许收錄”当成了同一件事。

抓取和收錄是两條獨立的线

搜尋引擎處理一個 URL,大致要经過几步:發現(從外鏈、sitemap、内鏈得知它存在)、抓取(取回内容)、索引(判断是否值得進入索引)、展示(在结果頁出現)。robots.txt 只作用于第二步。

它可以明确告诉蜘蛛“這個路径不要来抓”。但蜘蛛依然可能通過其他渠道知道這個 URL 存在,比如別的網站鏈過来、曾经被抓取過、sitemap 或其他文件里出現過。這種情况下,蜘蛛不會去取内容,却可能只凭 URL 本身和外部信号,先放一條没有摘要的索引记錄進去。

结果就是:屏蔽了抓取,却在结果頁里看到一條只顯示 URL、没有标题和描述的條目。這不是 robots.txt 失效,而是它的作用范围本来就不覆盖收錄。

Disallow 之後,noindex 為什么會失灵

更常见的一種誤操作是:先在 robots.txt 里寫 Disallow,再在頁面里加 noindex,以為這样是双重保險。實际效果往往相反。

noindex 是寫在頁面 HTML 里的指令,蜘蛛必须抓到頁面才能讀到它。如果 robots.txt 已经禁止抓取這個路径,蜘蛛根本進不来,也就看不到 noindex。两個指令叠在一起,等于把唯一可能让頁面登出索引的通道堵死了。所以想用 noindex,就必须让這個 URL 保持可抓取。

不同需求该用哪種手段

  • 只想省抓取资源、不介意是否收錄:用 robots.txt。适合後台路径、無限參數组合、站内搜尋结果頁這類不需要進索引也無需精细控制的地址。
  • 想让頁面彻底不進索引:用 noindex,並保證该 URL 可以被抓取,robots.txt 里不要屏蔽它。
  • 頁面已经废弃、不再需要:返回 404 或 410,或者 301 到内容相近的新頁面。這通常比 noindex 更干净。
  • 内容敏感、不能外露:不要依赖 robots.txt,它只是约定。真正的做法是權限控制或直接下线内容。

已经進了索引的 URL 怎么處理

  1. 先確認這條记錄属于哪種情况:是抓取過但被判断為低價值,還是從未抓取、只有一條 URL。前者看索引报告给出的原因,後者多半是外鏈造成的。
  2. 如果頁面還需要存在但不该被收錄:去掉 robots.txt 里的 Disallow,加上 noindex,等蜘蛛重新抓取後確認狀態變化。
  3. 如果頁面可以彻底消失:让它返回 404 或 410,同时清理指向它的内鏈,避免蜘蛛反复顺着連結過来。
  4. 如果内容已经搬到新地址:301 到新地址,並更新内鏈和 sitemap。
  5. 观察周期按周計,不要每天反复改動指令,否則蜘蛛每次抓到的狀態都不一样,反而拖慢處理。

容易忽略的几個细节

robots.txt 的規則通常是前缀匹配,“Disallow: /search” 會同时挡住 /searching 這類路径,寫規則时要留意邊界。同一路径下不同參數、不同大小寫的地址,在 robots.txt 里未必被同一條規則覆盖,需要分別確認。

還有一点:robots.txt 本身改错或返回 5xx 时,蜘蛛可能會在短期内放宽限制去抓取。所以改完之後,建议用抓取測試工具確認一遍規則是否按预期生效,再回头观察索引报告里的變化,而不是改完就当結束。

把這几件事分開看,思路會清楚很多:robots.txt 管的是“能不能来抓”,noindex 管的是“要不要留下”,404 和 301 管的是“這個地址還存不存在”。想移除一條收錄,先問自己属于哪一種,再去選對應的手段。