不少站点會遇到這样一種局面:某個目錄已经在 robots.txt 里寫上了 Disallow,站長以為它從此與搜尋無關,结果過一段時間在索引里仍能看到這些地址,甚至带着标题和摘要。于是有人反复修改 robots.txt,有人干脆再加一個 noindex,問题却一直悬着。要理清這件事,先要接受一個前提:搜尋引擎對頁面的處理分成「抓取」和「索引」两步,而 robots.txt 只约束第一步。
為什么「屏蔽了」和「還在索引里」能同时成立
robots.txt 的作用是告诉抓取程序「不要来取這個地址」,它並不能直接刪除已经存在的索引记錄。如果頁面在被屏蔽之前已经被抓取並收錄,那么屏蔽動作不會立刻让那條记錄消失。更麻烦的是,noindex 是寫在頁面 HTML 里的指令,抓取程序必须先把頁面取回来才能讀到它;如果這個地址正好被 robots.txt 挡在外面,noindex 就永遠讀不到,索引里的舊记錄也就無從更新。
還有一種情况是無摘要收錄:抓取程序被屏蔽、拿不到頁面内容,但通過外鏈、sitemap 等渠道拿到了這個 URL,于是只把它作為一個地址记錄進索引,展示时没有标题和摘要。這種记錄往往容易被忽略。
先看清索引里的形態再動手
處理之前,建议先做一次狀態確認,因為不同形態對應的處理方式完全不同。
- 有标题、有摘要:說明頁面此前被抓取過,屏蔽是後来才加的;
- 只有 URL、没有内容:典型的「被屏蔽但仍被發現」;
- 标题摘要是舊版本:說明屏蔽生效時間早于内容更新。
核對顺序
- 確認 robots.txt 規則真的命中了该地址。路径寫法、通配符、允许與禁止的優先級都會影响结果。用一個實际 URL 去测,而不是凭印象判断。
- 检查頁面里是否同时存在 noindex。如果两個限制叠在一起,抓取程序讀不到 noindex,這個指令實际上等于没寫。
- 判断取舍:到底想让它被收錄還是不被收錄。想保留收錄,就把 robots.txt 里的屏蔽去掉;想彻底移除,就先放開抓取、让 noindex 生效,等索引记錄消失後再考虑重新屏蔽。顺序反了,往往两头都落空。
- 看服務器返回的狀態碼。如果頁面本身已经是 404 或 410,直接用狀態碼表達「不存在」通常比 noindex 更干脆;前提是這個地址仍然可以被抓取到。
- 核對内鏈與外鏈。只要頁面還在被別處連結,抓取程序就會不断重新發現它。移除索引记錄的同时,連結入口也该一並處理。
- 观察一段時間再判断。索引记錄的更新不是實时的,狀態變化需要等下一轮抓取與處理,不宜一两天没變化就推翻方案。
几個常见的誤区
- 把 robots.txt 当成刪除工具:它只能限制抓取,不能直接移除索引。
- 被屏蔽的頁面再加 noindex:指令讀不到,等于無效。
- 一邊屏蔽目錄,一邊在 sitemap 里提交這些地址:這是给抓取程序制造矛盾信号。
- 只改一處,忘了分站、子目錄或測試环境的 robots.txt 各管各的。
简單记一條規則:robots.txt 决定「能不能来取」,noindex 决定「取到之後要不要留」。两者顺序颠倒,就會卡在既删不掉又改不了的狀態。
收敛做法
把想要移除的地址列成清單,先確認哪些是「只屏蔽未收錄」、哪些是「已收錄待清理」。對後者,先放開抓取,確認頁面能正常返回並携带 noindex(或直接返回 404/410),再處理内鏈入口,最後再决定是否需要恢复 robots.txt 的限制。整個過程可以分批次做,每批結束都回到索引狀態里核對一次,避免一次性改動過大、出問题时無從定位。
這套顺序的價值不在于快,而在于每一步都可驗證。屏蔽和收錄本就是两套机制,把它們混在一起讨论,問题只會反复出現。