看抓取日誌时,很多人只關注狀態碼是不是 200。但 200 只說明服務器正常响應了請求,不代表頁面有實际内容。商品下架後仍保留原 URL、篩選條件组合出空结果、栏目下暂时没有文章,這些頁面都可能返回 200,用戶和搜尋引擎打開的却是一個什么都没有的頁面。這類頁面通常被称為软 404。
软 404 和真正的 404 差在哪
真正的 404 會明确告诉搜尋引擎這個地址不存在。软 404 返回的是 200,内容却是空的、無结果的,或者只有一句暂無内容。對搜尋引擎来说,它需要多花一步去判断頁面價值,處理速度通常比真 404 慢,也更容易出現已抓取但未索引,或者直接收錄一個空頁面的情况。
它和頁面内容偏薄也不完全一样。内容偏薄的頁面仍然有主体信息,软 404 則是頁面本身没有可用的主体内容。
常见来源先列清楚
- 商品、房源、职位等已下架,但 URL 還能打開;
- 站内搜尋、篩選、排序组合出零结果;
- 栏目或标簽下暂时没有内容;
- 需要登入或權限不足,未登入时返回空頁面;
- 模板或資料調用出错,頁面只剩头部和底部。
前两類最常见,也最容易在日誌里堆积大量 URL。
先识別,再决定怎么處理
不要看到空頁面就直接批量 404。先確認它是暂时狀態還是永久狀態。
- 看狀態碼分布。從服務器日誌或抓取統計里找出返回 200 但响應体很小、内容為空的 URL 類型。
- 抽查頁面。打開几個代表性 URL,確認是模板問题、資料問题,還是业務上确實没有内容。
- 区分暂时與永久。商品可能补货、栏目可能更新,這類属于暂时;下架不再上架、活動永久結束,属于永久。
按场景選擇處理方式
永久不再使用的頁面
如果頁面确定不會再恢复,返回 404 或 410 比繼續返回 200 更清晰。410 表示永久移除,语义更明确,但 404 同样可用。處理後把站内指向它的連結去掉,sitemap 里也移除對應 URL。
暂时没有内容的頁面
如果頁面之後還會恢复,不要急着 404。可以保留 200,但在頁面上加 noindex,等有内容後再移除。這样既不影响用戶訪問,也避免空頁面進入索引。若只是短暂故障,也可以考虑返回 503,但要控制時間,不要長期使用。
站内搜尋和篩選頁
這類頁面數量可能非常多。零结果頁建议加 noindex,並且不要放進 sitemap,同时减少從其他頁面指向它們的連結。有结果的篩選頁是否收錄,要單獨判断,不要和零结果頁混在一起處理。
几個容易帮倒忙的做法
- 把空頁面 301 到首頁。這會让搜尋引擎把大量 URL 都指向首頁,也容易让用戶困惑。
- 用 JavaScript 跳轉首頁。狀態碼仍是 200,問题没有被解决。
- 用 robots.txt 屏蔽代替 noindex。屏蔽後搜尋引擎無法讀取頁面上的 noindex,已收錄的 URL 可能長期留在索引里。
- 全部返回 200 加一句暂無内容。這等于把软 404 留在站点里,抓取资源會持續被消耗。
處理完之後看什么
調整後不需要天天盯着,但可以按周观察几項:抓取日誌里空頁面 URL 是否减少;索引中是否還出現這些地址;已抓取未索引的數量是否變化。如果頁面數量很大,分批處理比一次性全改更容易定位問题。
软 404 的核心不是狀態碼好不好看,而是让搜尋引擎能明确判断一個 URL 该留還是该走。暂时保留、永久移除、不參與索引,這三種狀態分清楚,處理顺序自然就清楚了。