做内容清理时,很多人第一反應是在 robots.txt 里加一條 Disallow,或者在頁面头部塞一個 noindex。看起来都是在说“別收這個頁面”,但這两件事發生在完全不同的环节。顺序用反,常见的结果是頁面依然留在索引里,而且因為蜘蛛抓不到,後續想查都查不了。
禁止抓取和禁止收錄是两件事
抓取是搜尋引擎把頁面内容取回去,收錄是取回之後决定要不要放進索引。robots.txt 影响第一步,noindex 影响第二步。
- robots.txt 里的 Disallow:告诉蜘蛛這個路径別来抓。蜘蛛通常遵守,于是它拿不到頁面内容。
- noindex:寫在頁面里,意思是“抓到了,但別放進索引”。它的前提是頁面能被抓到。
這里的關键点是:noindex 是頁面内容的一部分,蜘蛛不進来看,就永遠讀不到這條指令。
被屏蔽的 URL 仍可能出現在结果里
一個地址被 Disallow 之後,如果站内其他頁面或站外連結還在指向它,搜尋引擎仍可能把這個 URL 记下来。它可能出現是结果里,但通常没有标题、描述和摘要,只是一個孤零零的連結。這不算违規收錄,而是蜘蛛無法確認頁面内容,只能先保留地址。
屏蔽抓取不等于從索引里消失,很多时候只是把頁面變成了“看不到内容”的狀態。
noindex 不生效的几種情况
- 頁面同时被 robots.txt 挡住,蜘蛛進不来,讀不到 noindex。
- noindex 是通過 JS 渲染後才插進 DOM 的,首轮抓取看不到。
- 寫在 HTTP 响應头 X-Robots-Tag 里,但格式或字段名寫错了。
- 同一個頁面既寫了 noindex,又寫了指向自己的 canonical,信号互相矛盾。
- meta 标簽拼寫有誤,實际等同于没寫。
移除已收錄頁面,可以按這個顺序做
- 先確認頁面能被抓取:robots.txt 不挡這個路径,訪問返回 200。
- 在頁面头部或响應头加上 noindex,保持可抓取狀態。
- 等搜尋引擎重新抓取這個地址,索引狀態會慢慢變成已排除或從结果中淡出。這個過程從几天到几周都有可能。
- 確認索引里已经没有它之後,如果确實不想再让蜘蛛把抓取机會花在這里,再考虑加 Disallow。
把顺序倒過来做,最容易卡在第一步:Disallow 一加,蜘蛛再也讀不到 noindex,頁面就可能長期以無摘要的形式挂在索引里,既占位置又难處理。
頁面已删或者需要尽快消失
- 内容确實不再提供:返回 404 或 410 通常比 noindex 更直接。410 语义上更明确,表示已刪除。
- 頁面要留着给用戶看,只是不想被搜到:用 noindex,同时保證它可被抓取。
- 整站或整個目錄临时不想被抓:robots.txt 可以临时用,但要记住它只是一個抓取開關,已有的收錄狀態不會跟着一起清掉。
几類常见誤用
- 測試站没有防護:既没 noindex 也没訪問限制,被抓走之後變成重复内容的来源。
- 给 noindex 頁面做内鏈:内部連結會持續把蜘蛛引向這些地址,既浪費抓取机會,也让這些 URL 更容易被外部發現。
- 只改 robots.txt 就以為頁面會消失:收錄层面的移除需要頁面級指令或者狀態碼来配合。
- 對分頁、篩選頁一刀切 Disallow:如果商品或内容的唯一入口就在這些頁面里,屏蔽抓取會顺带断掉發現路径,反而影响真正想被收錄的頁面。
自查顺序小结
遇到“不该被收錄的頁面還挂在索引里”,可以按這個顺序排一遍:頁面現在返回什么狀態碼,robots.txt 是否挡住了它,蜘蛛能不能讀到 noindex,有没有内鏈或外鏈在持續指向它,最後再考虑用工具提交移除請求。把這几步的顺序理清,通常比反复改 robots.txt 更省事。