清理收錄时,不少站点习惯做两件事:一邊在 robots.txt 里屏蔽某個目錄,一邊在頁面上加 noindex。看着像双保險,實际常常互相打架——抓取一旦被挡住,noindex 這個信号根本送不出去。
抓取與索引是两道不同的工序
搜尋引擎處理一個 URL,大致分两步:先把 HTML 取回来,這一步叫抓取;再判断它能不能作為搜尋结果出現,這一步叫索引。robots.txt 管的是第一步,noindex 管的是第二步。两把鎖開在不同的门上,混着用就容易出問题。
robots.txt 拒绝抓取,不等于刪除索引
Disallow 的意思是“別来抓”,不是“別收錄”。一個 URL 如果之前已经被抓取並進了索引,寫了 Disallow 之後,那條记錄仍可能保留,因為搜尋引擎拿不到新頁面来判断内容是不是變了。表現出来就是:搜尋结果里還能看到這條 URL,点進去信息却是舊的,标题和摘要有时還會拼错。
noindex 必须被讀到才生效
noindex 寫在頁面 HTML 的 meta 标簽或响應头里,前提是搜尋引擎能把頁面抓下来。如果這個 URL 同时被 robots.txt 挡住,爬虫取不到 HTML,看不到 noindex,登出索引的指令就落空了。這就是常见的“双保險變双失效”。
几種容易踩的组合
- 目錄屏蔽 + 頁面 noindex:noindex 大概率讀不到,URL 可能長期留在索引里。
- 只加 noindex、不挡抓取:頁面繼續被抓,確認信号後逐步登出索引,這是更稳的做法。
- 只加 robots.txt、不加 noindex:頁面不再被抓,但已有索引不會立刻消失。
- 屏蔽之後別處仍有内鏈:爬虫依然知道這個 URL 存在,只是不去抓,發現和抓取本来就是两回事。
按目的選工具
目标一:让某個 URL 從索引里登出
- 確認頁面可以被抓取,robots.txt 不要挡這條路径。
- 在頁面加 noindex,可用 meta 标簽或 X-Robots-Tag 响應头。
- 等搜尋引擎重新抓取並處理,索引记錄逐步减少,這個過程有滞後,不是即时的。
- 確認登出後,如果确實不想再被抓,再考虑加屏蔽規則。
目标二:不想让爬虫消耗抓取资源
比如後台路径、站内搜尋结果頁、大量的篩選參數组合。這類场景用 robots.txt 是合理的,但要接受一個前提:已经進索引的地址不會因為寫了 Disallow 就立刻消失,需要單獨處理或等待自然更新。
目标三:既不想被收錄,也不想被訪問到
後台、測試环境、内部资料属于這一類。更稳妥的做法是權限控制,或者干脆返回 403、404,而不是只靠 robots.txt 和 noindex。搜尋指令是约定,不是訪問控制。
排查清單
- 用 robots.txt 測試工具確認目标路径是否被挡。
- 用抓取測試工具看頁面實际返回的 HTML 里有没有 noindex。
- 检查 noindex 是否寫在响應头里,與頁面 meta 是否冲突。
- 检查是否有 X-Robots-Tag 和其他規則叠加。
- 確認 canonical 没有指向一個允许收錄的地址,canonical 與 noindex 同时出現會互相干扰。
记一句:robots.txt 决定“能不能抓”,noindex 决定“要不要留”。想让它走,就別先把门鎖上。
改完之後怎么看
收錄變化通常有滞後,配置改完不要一天一查就下结论。观察周期以周為單位更合理,同时看抓取频次、抓取狀態碼和索引數量的趋势,而不是盯着某一天的數字。信号是否送達,比數字当天有没有動更值得關注。