網站收錄

robots.txt 屏蔽了頁面,索引里却還留着:抓取屏蔽與索引移除的核對顺序

把 robots.txt 的 Disallow 当成刪除索引的開關,是收錄處理里很常见的一種誤解。屏蔽抓取和禁止收錄是两條獨立的线:爬虫拿不到内容,就讀不到頁面上的 noindex。本文按场景梳理该用 noindex、404/410 還是 Disallow,並给出残留 URL 的自查顺序。

網站收錄

robots.txt 屏蔽了頁面,索引里却還留着:抓取屏蔽與索引移除的核對顺序

不少人把 robots.txt 当成“從搜尋结果里删掉頁面”的開關:加一條 Disallow,就觉得這個地址會從索引里消失。跑一段時間後回头看,site: 查询里那個 URL 還在,只是标题和摘要變成了一串占位文字。這不是引擎没执行指令,而是把两件不同的事混在了一起——不让爬虫来抓,和把已收錄的结果移出索引。

抓取屏蔽和索引移除是两條线

robots.txt 管的只有一件事:爬虫能不能来取這個 URL 的内容。它不负责清理已经建好的索引條目。一個 URL 被抓取並收錄過之後,即便再加 Disallow,索引里通常仍會保留這個地址,因為引擎知道它存在,只是拿不到最新内容来更新标题和摘要。

反過来,真正能让頁面登出索引的信号必须寫在頁面本身或 HTTP 响應头里,而爬虫要讀到這些信号,前提是這個 URL 先被允许抓取。

结论有点反直觉:想让 noindex 生效,就不能用 robots.txt 把它挡在门外。屏蔽抓取和禁止收錄同时用,會互相抵消。

几種手段各自能做什么

  • robots.txt 的 Disallow:控制抓取范围和频次,适合參數頁、站内搜尋、後台路径。但它不等于移除索引,已收錄的 URL 可能長期以無描述形式残留。
  • meta robots noindex 或响應头里的 X-Robots-Tag: noindex:告诉引擎不要把這一頁放進索引。适合頁面還在线上、但不希望出現在搜尋结果里的情况。
  • 404 與 410:内容确實下线时使用。410 表示永久移除,信号更明确。注意別用 200 返回一個“内容已刪除”的提示頁,那是软 404。
  • 移除請求工具:临时手段,主要用来争取時間,最终仍要靠上面三種之一给出稳定信号,否則到期後残留還會回来。

常见的组合错誤

  • 整個目錄 Disallow,同时又在頁面里寫 noindex——指令讀不到,等于没寫。
  • 頁面已经彻底下线,却只加 Disallow,不返回 404 或 410,舊标题可能繼續展示。
  • 整站 Disallow 之後干等索引自然消失,结果只是把结果變成無描述的形式。
  • 測試站上线时忘了删掉 Disallow,導致新頁面一直進不了索引,這是收錄量突然归零的高频原因。

按场景的核對顺序

  1. 先判断這張頁面是否還需要存在。還在线上、只是不想被搜到,用 noindex,並保持可抓取。
  2. 内容彻底不要了,返回 410 或 404;内容只是搬到了新地址,用 301 指向新地址,而不是 Disallow。
  3. 只是不想被抓太多,比如排序參數、篩選组合、站内搜尋,Disallow 可以用,但要接受索引里可能残留 URL 這一事實。
  4. 已经出現残留,先確認 robots.txt 没有挡住抓取,让 noindex 有机會被讀到;情况紧急时再提交移除請求過渡。
  5. 改完做一次驗證:用 robots.txt 測試工具跑目标路径,確認是 allow 還是 disallow,再看頁面的返回碼與响應头里的 X-Robots-Tag。

自查清單

  • site: 查询残留 URL 是否還在,展示形式是否異常,比如無描述、标题顯示為域名。
  • 抓取日誌里這些 URL 的狀態是 200 還是 robotted,能直接反映爬虫有没有真的拿到内容。
  • 頁面索引报告里“已發現但未编入索引”和“已编入索引但未展示”的分布,用来判断問题出在抓取還是頁面本身。
  • 把“確認生产环境 robots.txt 没有誤伤主目錄”寫進上线检查表。

robots.txt 是一把范围很大的刀,切的是抓取范围,不是索引狀態。處理收錄問题时,先想清楚自己要的到底是“別被抓”還是“別被收錄”,再挑工具;顺序弄反,往往就是白等几個月。