蜘蛛抓取一個 URL 时,除了讀取頁面内容,還會记錄服務器返回的狀態碼。這個三位數字往往比内容更早被判断:它决定搜尋引擎接下来是繼續保留這個地址、把信号轉移到新地址,還是慢慢让它登出索引。很多看起来像「收錄出問题」的情况,根源其實是狀態碼给错了信号。
狀態碼是蜘蛛判断頁面去留的第一依據
搜尋引擎没法像人一样判断一個頁面是否還有意义,它主要依赖两件事:服務器的回應,以及頁面里的内容。狀態碼是前者,获取成本最低,也最容易被信任。如果狀態碼和頁面實际情况對不上,後續的抓取、收錄、展示都可能跟着走偏。
几種常见返回值分別意味着什么
200:正常返回
代表頁面有效,可以抓取和评估。需要注意的是,200 只說明服務器成功响應了,並不代表内容合格。如果返回 200,内容却是「商品已下架」「该分類暂無内容」,就會被归到软 404 那一類,後面再讲。
301 與 308:永久跳轉
适合域名更換、URL 结构改版這類長期生效的场景,含义是舊地址作废,信号應该轉移到新地址。使用时尽量做到一跳到位,A 跳到 B 再跳到 C 這種鏈條會削弱传递效果,也让蜘蛛多花几次抓取预算。
302 與 307:临时跳轉
适合短期活動頁、临时维護頁。但如果長期挂着 302 来做迁移,搜尋引擎可能仍把舊地址当作正式版本保留在索引里,迟迟不肯把新地址扶正。永久變更就不要用临时跳轉凑合。
404 與 410:頁面不存在
404 表示找不到,410 表示明确已刪除,两者的最终结果都是让頁面登出索引,410 的態度更干脆。但要先確認一件事:如果這個頁面有内容相近的替代頁,更适合做 301 指向替代頁,而不是直接让它 404。
503:暂时不可用
服務器维護或過载时使用,等于告诉蜘蛛過一阵再来。它适合短時間窗口,维護周期拉得太長,就可能被当作長期不可用處理。另外別把它和 500 混用,500 表示服務端出错,反复出現會降低抓取频率。
软 404 和 200 空壳頁最容易被忽略
這類頁面在狀態碼上是 200,看起来很健康,但内容层面已经失去價值:篩選後無结果的列表頁、被清空的分類頁、下架後只留一句提示的商品頁,都属于這一類。搜尋引擎會结合内容做二次判断,把它們按软 404 處理,逐步從索引里拿掉。因為狀態碼没有报错,站長在监控里往往看不到異常,只能在收錄資料上感受到頁面一個個變少。
狀態碼用错时,通常會看到哪些現象
- 迁移时用了 302,舊 URL 長期留在索引里,新地址迟迟得不到承認。
- 頁面确實删了,却返回 200 的空壳内容,索引里挂着没有意义的地址。
- 维護期間直接返回 500,蜘蛛连續失敗後降低整站的抓取频率。
- 跳轉鏈太長,新地址的抓取優先級被拖後。
一套可执行的自查顺序
- 先看抓取日誌或抓取測試工具,確認重点 URL 實际返回的狀態碼,而不是你以為的狀態碼。
- 把頁面按保留、迁移、刪除三類归好,狀態碼要和類型對應,不要混着用。
- 迁移统一用 301,尽量一跳到位;確認刪除的頁面用 404 或 410。
- 排查站内有没有 200 的空壳頁和软 404,尤其是篩選頁、标簽頁和下架内容。
- 改完之後持續观察一段時間,看索引是按预期收缩,還是把信号轉移到了新地址。
狀態碼本身不承诺收錄,它的作用是让搜尋引擎少猜。信号给對,抓取和收錄的處理顺序就不容易乱。