頁面從網站上撤下来之後,索引里往往還會留一阵子。這通常不是搜尋引擎反應慢,而是下线動作本身没把该發的信号發全:内鏈入口還挂着、sitemap 里還列着、訪問时返回的狀態碼依然是 200,蜘蛛下次爬過来照样把它当成正常頁面處理。想让索引狀態尽快跟上站点現状,先把“為什么下线”和“用什么方式下线”這两件事對上号。
先分清下线的三種意图
同样是撤頁面,背後的意图差別很大,處理方式也完全不同。先归類,再動手。
- 临时下架:内容還在,只是暂时不想让人看到,比如季节活動頁、临时维護的栏目頁。
- 永久刪除:内容不再需要,也没有替代頁面,比如過期公告、作废的产品型号頁。
- 内容搬家:内容還在,只是換了 URL,或者合並進了另一個頁面。
把這三類混在一起處理,是最常见的返工来源。临时下架却直接 404,等重新上线时收錄要重走一遍;永久刪除却留着 200 的頁面慢慢劝退,索引會長期挂着一條無效记錄。
狀態碼是最直接的一层信号
永久刪除:用 404 或 410
頁面确實不要了,就让它返回 404 或 410。410 语义上更明确,表示“永久不存在”,在部分场景下收敛速度會比 404 略快一些;但 404 同样有效,不必為了一個狀態碼去改動整套系統。真正要避免的是刪除内容後仍然返回 200——那等于告诉搜尋引擎“這個頁面還在,只是變空了”。
内容搬家:301 指向新地址
頁面換 URL 或被合並到另一個頁面时,用 301 把舊地址指向新地址,並且尽量做到一對一:舊 A 指向新 A,舊 B 指向新 B。把一批舊頁面全部跳到首頁或栏目首頁,属于典型的多對一,搜尋引擎大概率會把它們当成软 404 處理,跳轉也就白做了。
临时下架:noindex 比 robots.txt 合适
只是暂时不想出現,頁面本身還要留着,用 noindex 更合适。這里有個容易踩的点:如果同时用 robots.txt 屏蔽了抓取,蜘蛛拿不到頁面上的 noindex 指令,反倒無法確認你想要移除,结果就是頁面既抓不到、也退不出索引。
抓取屏蔽和索引屏蔽是两件事。robots.txt 管的是“別来抓”,noindex 管的是“別收錄”。要移除索引,頁面必须允许被抓取。
如果下架只是短期维護、几天内就恢复,503 配合 Retry-After 也是一種選擇,但不要長期挂 503,否則會被当作長期不可用處理。
只改狀態碼不够,入口要一起收拾
狀態碼是给已经爬到的蜘蛛看的,入口清理决定的是“還會不會有新的爬取不断找来”。两邊都做,收敛才快。
- 站内導航、面包屑、相關推荐里的連結,该删的删,该換成 301 的換。
- sitemap 里把已下线 URL 移除;保留舊 URL 只會持續引導抓取。
- 站内搜尋、标簽頁、归档頁這類自動生成的列表,检查是否還在輸出死鏈。
- 外鏈無法控制,不必强求,但可以確認舊地址确實返回 301 或 404,而不是 200。
一個常被忽略的情况:200 的空壳頁
有些頁面下线後並不是返回 404,而是内容被清空了、模板還在,訪問起来仍是 200,頁面上只剩導航和一句“暂無内容”。這類頁面在索引里會以“已抓取、内容质量低”的形式長期停留。识別方法很简單:拿几個已下线的 URL 直接訪問一次,看看狀態碼和頁面實际内容是否還匹配。不匹配就先修狀態碼,再谈清理。
收尾检查清單
- 確認下线意图属于临时、永久還是搬家。
- 按意图選擇 noindex、404/410 或 301,並驗證實际返回。
- 清理站内連結與 sitemap 中的對應條目。
- 检查是否誤用 robots.txt 挡住了需要被移除索引的頁面。
- 抽查已下线 URL,排除 200 空壳頁。
- 過一段時間回看索引覆盖情况,確認舊 URL 數量在下降。
別指望一次就干净
索引更新需要時間,尤其是外鏈較多、曾经有過流量的頁面,残留時間會更長一些。與其反复提交,不如先把信号统一:狀態碼正确、入口清理干净、sitemap 不再引用,剩下的交给正常的抓取周期。真正拖時間的,通常不是搜尋引擎,而是站点自己發出的信号還在互相矛盾。