網站收錄

robots.txt 屏蔽後頁面仍在索引:移除 URL 时容易弄反的顺序

robots.txt 只拦抓取,不管索引,這是頁面被屏蔽後仍出現在搜尋结果里的常见原因。本文梳理抓取、索引、展示三段鏈路的分工,给出想移除一個 URL 时的操作顺序,以及 noindex、狀態碼、移除工具各自适用的场景和容易弄反的几處细节。

網站收錄

robots.txt 屏蔽後頁面仍在索引:移除 URL 时容易弄反的顺序

為什么屏蔽了還在索引里

经常遇到一種情况:某個頁面已经在 robots.txt 里寫了 Disallow,過了一段時間去搜,结果還在。于是判断「robots.txt 没用」。其實不是没用,而是用错了地方。robots.txt 管的是抓取,不管索引。当蜘蛛被挡在门外,它拿不到頁面目前的内容,也讀不到頁面里的 noindex,只能繼續沿用之前那一版快照。屏蔽得越早,舊版本留存的時間可能越長。

先把三段鏈路分開

  • 抓取:蜘蛛能不能把頁面下载下来,受 robots.txt、服務器狀態、抓取预算影响。
  • 索引:下载到的内容要不要存進索引库,受 noindex、canonical、内容质量影响。
  • 展示:用戶查询时這條结果是否出現,受相關性、排序、地区語言等影响。

robots.txt 作用在第一段,noindex 作用在第二段。想让頁面從索引里消失,却只在第一段動手,等于關掉了门却指望屋里的人自己走。

想移除一個 URL,推荐的操作顺序

  1. 先確認這個 URL 現在還能不能被抓取。如果已经被 robots.txt 屏蔽,第一步是把屏蔽放開,让蜘蛛能正常訪問。
  2. 在頁面返回 200 的前提下,加上 noindex,或者通過响應头下發 X-Robots-Tag: noindex。注意 noindex 只有被讀到才生效,讀不到等于没寫。
  3. 保持這個狀態,等蜘蛛重新抓取。期間不要反复改動指令,来回切換會让狀態很难判断。
  4. 確認该 URL 從索引里消失之後,如果目的是省抓取预算,再考虑用 robots.txt 屏蔽它。
  5. 如果頁面本身已经不打算保留,直接返回 410 或 404 往往比 noindex 更干脆,因為狀態碼本身就說明頁面不存在。
  6. 需要更快處理时,可以使用搜尋引擎提供的移除工具,但它通常只是临时措施,長期還是要靠頁面自身的狀態。

顺序的核心是一句话:先让它能被抓到,再告诉它不要索引。

robots.txt 是给抓取用的,noindex 是给索引用的,两者解决的不是同一個問题。

几種意图對應的做法

  • 頁面要留着给人看,只是不想出現在搜尋里:用 noindex, follow,頁面可以正常訪問,内鏈也可以繼續传递。
  • 頁面彻底不要了:返回 410 或 404,或者用移除工具,不要用 301 指向一個毫不相關的頁面。
  • 只是不想被下载,比如某些资源文件:用 robots.txt,但要清楚它不會让已经進入索引的 URL 自動消失。
  • 參數頁、篩選頁這類重复版本:先確認哪個是主版本,再决定是收敛到主版本還是整体 noindex。

容易弄反的几處细节

  • 先 Disallow 再加 noindex。顺序反過来,蜘蛛進不来,noindex 永遠讀不到,頁面就一直留着。
  • 只在 robots.txt 寫 Disallow,就等着頁面從索引消失。多數情况下它不會消失,只是内容變舊。
  • 加了 noindex,但頁面返回 404 或 5xx。這时候 noindex 讀不到,真正起作用的是狀態碼。
  • noindex 加在 A 版本上,實际被抓取和索引的是 B 版本,指令落空。
  • canonical 指向一個頁面,noindex 又寫在目前頁,两個信号互相矛盾,最终结果不好预判。

核對顺序小结

遇到「屏蔽了還在索引里」,按這個顺序看一遍:抓取狀態是否放行、HTTP 狀態碼是什么、索引指令寫在頁面還是响應头、目前索引狀態處于哪一档、查询时是否還能展示。一层一层往下走,別跳步。多數問题不是指令没用,而是指令加在了它起不到作用的那一层。