下线的活動落地頁、誤上线的測試目錄、已经合並掉的舊栏目,這些地址都希望從搜尋索引里彻底消失。實际操作中最常见的做法是往 robots.txt 里加一行 Disallow,然後等上几周,發現搜尋结果的對應地址還在,只是标题和摘要變得很空。問题往往不在引擎的處理速度,而在于 robots.txt、noindex、404/410 這几類手段挡在完全不同的环节上。
三種手段分別挡在哪一步
- robots.txt:只限制抓取。地址没被抓取,就無從得知頁面内容,也無法看到你後来加上的 noindex。如果這個 URL 有外鏈指向,它仍可能以“只有地址、没有摘要”的形式留在索引里。
- noindex(meta robots 或 X-Robots-Tag):作用在抓取之後、進入索引之前,前提是頁面能被正常抓取,並且返回 200。
- 404 / 410:表示资源已经不存在。410 语义更明确,通常處理得稍快一些,但两者最终都會让 URL 登出索引。
- 401 / 403:表示需要授權或被拒绝訪問。這類响應一般不會让 URL 立刻消失,索引里可能長期保留地址。
最典型的冲突:既屏蔽抓取又寫 noindex
這是下线頁面时出現频率最高的错誤组合。两者的逻辑相互抵消——noindex 需要被讀到才生效,而 robots.txt 恰好阻止了讀取。
如果頁面已经用 robots.txt 屏蔽了很久,先移除屏蔽、允许抓取,等 noindex 被识別之後,再决定是否需要重新收紧抓取。
每一步都值得留出观察時間,顺序大致如下:
- 保持抓取正常:200 响應、robots.txt 放行、頁面可訪問。
- 在 head 中寫入 noindex,非 HTML 资源則返回 X-Robots-Tag: noindex。
- 用 URL 检查類工具確認引擎已抓到頁面,並识別到 noindex。
- 等待索引移除。頁面量級和站点抓取频率不同,時間差別很大。
- 確認移出後,若仍希望减少抓取压力,再考虑用 robots.txt 屏蔽;但要接受個別被外鏈指向的地址可能以無摘要形式残留。
内容确實不要了:301、410 還是保留 200
- 有内容等價的新地址:用 301 指向新地址,让訪客和信号一起過去。
- 彻底刪除且没有替代:返回 410,或至少 404,不要返回 200。
- 只是暂时關閉、之後會恢复:保留地址並加 noindex,不要用 404,否則恢复後又要從头积累。
- 最不该做的是返回 200 的空壳頁或“内容已刪除”提示頁,這類软 404 會让 URL 長期挂在索引里。
几個容易漏掉的细节
- meta robots 标簽要寫在 head 中,服務端直出最稳妥;依赖脚本動態插入的方式,在部分抓取场景下可能讀不到。
- noindex 與 canonical 同时指向別處,信号會互相打架:既然决定登出索引,canonical 就不必再指向任何地址。
- 頁面只要還被外部連結引用,地址就有机會出現在索引中,主動申請移除通常只能算临时手段。
- 抓取频率低的站点,已收錄頁面重新被抓的周期更長,撤除也會相應變慢,這類站点更适合提前規划、分批操作,而不是上线前才临时补救。
一個可直接执行的检查顺序
- 先看 URL 目前的响應碼:200、301、404、410 還是 403。
- 再查 robots.txt 是否拦住了该路径。
- 然後確認頁面里是否真的有 noindex,位置是否在 head。
- 用 URL 检查工具查看引擎抓到的版本,確認關键标簽已被识別。
- 最後清理其他入口:内鏈、站点地图、導航、feed。
把這些环节拆開看會發現,下线一個頁面並不是加一行屏蔽那么简單,而是要分別决定它在“能被抓到”“能被索引”“還存在”這三件事上處于什么狀態。顺序排對了,多數下线需求都能在可控時間内落地,也少了自己给自己制造矛盾信号的情况。