服務器返回的狀態碼,是蜘蛛每次請求頁面时得到的第一句回答。它不决定頁面内容好不好,但很大程度上决定了搜尋引擎怎么對待這個已经存在的 URL:是把索引換到新地址,是繼續保留舊地址,還是让它慢慢登出索引。
很多站点把狀態碼当成技術细节交给開發随手寫,结果就是一次改版之後,索引里新舊地址長期並存,或者临时頁面在没有任何通知的情况下直接消失。
抓取和收錄是两件事,狀態碼先影响的是抓取
蜘蛛請求一個 URL,只要服務器正常响應,它就算抓取成功。但收到的是 200 還是 301,後續動作完全不同。狀態碼改變的是“這個地址代表什么内容”的判断,進而影响索引里该保留哪一條记錄。
- 200:正常内容,索引可能保留或更新這個地址。
- 301 / 308:内容已经永久搬到別處,索引倾向于轉移到目标地址。
- 302 / 307:只是临时變化,原地址通常繼續保留在索引里。
- 404 / 410:内容不存在,索引會逐步移除。
- 503:临时不可用,蜘蛛會稍後再来。
301:真正的搬家信号
301 表示原地址永久失效,内容和它對應的索引记錄應该轉移到新地址。它是最常被用错的信号之一,几個细节值得注意:
跳到相關且稳定存在的頁面
舊頁面下线後统一跳到首頁或栏目首頁,短期看似省事,但如果舊頁面本身有搜尋需求,跳到一個泛泛的首頁,用戶和搜尋引擎都拿不到原本的内容。更稳妥的做法是跳到内容最接近的現存頁面,找不到對應的就让它返回 404。
避免鏈式跳轉
A 跳 B、B 再跳 C,會让蜘蛛多走一步,也容易让索引落在中間地址上。改版时最好把所有舊地址一次性指到最终地址。
同时更新站内連結
跳轉只是兜底。内鏈、導航、站点地图里如果還留着舊地址,蜘蛛會反复走跳轉,占用抓取机會,也不利于新地址被稳定识別。跳轉和連結更新應该一起做,不要只做一半。
302:临时跳轉,原地址大概率留在索引里
302 的语义是“暂时這样”,所以原地址通常繼續保留在索引中。它适合短期的活動引導、A/B 測試、临时维護期的入口調整,不适合長期使用。
常见問题是把 302 当成 301 来做永久搬家。這種情况下,原地址可能長期占着索引位置,新地址难以稳定接過流量,出現新舊两個地址都能搜到、内容還一样的局面。如果確認是永久變更,應该改成 301。
404 和 410:内容真的没了
404 表示頁面不存在,410 表示頁面曾经存在但已永久刪除。两者都會让索引逐步移除這個地址,410 的语义更明确一些,但實际處理速度受抓取频率、站点整体质量和外鏈數量影响,不會有统一的時間表。
需要處理的是软 404:服務器返回 200,頁面里却寫着“商品已下架”“内容不存在”。這種頁面在技術上算抓取成功,容易被当成薄内容繼續留在索引里。判断方法不复杂:批量抓取几個可疑 URL,看返回碼和頁面主体是不是一致。
狀態碼和頁面内容不一致,是收錄問题里最容易被忽略的一類。技術上返回 200,用戶和搜尋引擎看到的却是空頁面。
頁面只是临时下线,该怎么選
- 几小时的维護:返回 503,並给出预計恢复時間,索引一般不受影响。
- 商品短期缺货但會恢复:保留頁面和内容,不要直接改成 404。
- 頁面已经确定不要了:返回 404 或 410,让索引自然清理。
- 頁面還要留着但不希望被搜到:用 noindex,同时保證頁面可以正常訪問。
自查顺序
- 找出返回 200 但正文為空、或提示内容不存在的頁面,先處理软 404。
- 检查跳轉鏈,把多級跳轉压成一級,直接指向最终地址。
- 確認長期變更用的是 301,短期調整才用 302。
- 核對内鏈和站点地图里的地址,是否還指向舊 URL。
- 對已经刪除且無替代内容的頁面,允许它正常返回 404。
狀態碼不能保證頁面一定被收錄,它只是让搜尋引擎對“這個地址現在是什么狀態”有清晰判断。真正麻烦的往往不是狀態碼本身寫错,而是狀態碼和實际意图不一致——服務器说的和运营想的不是一回事。