站点运营

站点运营:404 與软 404 自查,別让能打開的頁面掩盖失效狀態

頁面能打開、狀態碼是 200,内容却已经不存在,這類软 404 會持續占用抓取額度。本文梳理空列表、下架詳情頁、前端框架兜底等常见来源,给出用响應头、訪問日誌和站長平台报告排查的步骤,以及對應的狀態碼處理建议。

站点运营

站点运营:404 與软 404 自查,別让能打開的頁面掩盖失效狀態

站点运营里有一類問题很隐蔽:地址能打開,浏览器不报错,用戶看到一句「暂無内容」,服務器返回的却是 200。這種頁面在蜘蛛眼里是正常頁面,但它没有任何價值,還會不断占用抓取額度。這就是软 404。

软 404 和真 404 的区別

真 404 是服務器明确告诉蜘蛛「這個地址没有對應内容」。软 404 是内容已经不存在,服務器却给出 200,只是在頁面里寫了提示文字。前者能让蜘蛛快速放弃這個地址,後者會让蜘蛛反复回来確認,甚至在索引里留下一條空壳记錄。

還有一種相反的情况:真正的错誤頁返回的狀態碼是 200。比如有人把自定义错誤頁配置成普通頁面,用戶看到「頁面不存在」,蜘蛛收到 200,于是把它当成一篇正常内容對待。

常见的软 404 来源

空列表與空搜尋结果

篩選條件叠加到没有结果的组合、搜尋關鍵詞没有匹配、栏目下暂时没有内容,這些頁面往往沿用列表頁模板,返回 200 並顯示「暂無相關结果」。如果參數组合能被無限拼出来,這類地址會成規模出現。

已下架但保留框架的詳情頁

商品、活動、职位、文章下线後,很多人只在前台把正文删掉,頁面模板還在,标题變成空白或「内容已刪除」,狀態碼依舊是 200。

框架统一返回 200

部分前端框架在客戶端渲染,服務端對所有路由都返回 200,再由 JavaScript 决定顯示哪種頁面。蜘蛛拿到的初始响應是 200,看不到真實狀態。單頁應用尤其容易出現這種情况。

兜底跳轉與首頁重定向

把不存在的地址全部 301 到首頁,看起来用戶不會碰到错誤頁,但對蜘蛛来说,一批無關地址指向同一個頁面,既浪費抓取,也容易让首頁被当成萬能落点。這種處理通常比直接返回 404 更麻烦。

自查步骤

  1. 用命令行工具或浏览器開發者工具看响應头,重点關注狀態碼,而不是頁面長什么样。
  2. 挑一批低價值地址做抽查:空篩選组合、已下架詳情頁、長期無更新的栏目頁、站内搜尋结果頁。
  3. 翻服務器訪問日誌,統計返回 200 但内容几乎為空的地址數量,按目錄归類。
  4. 在站長平台里查看软 404 相關报告,與日誌结果對照,確認不是統計口径的問题。
  5. 检查自定义错誤頁本身返回的狀態碼,確認它是 404 而不是 200。

發現之後怎么處理

  • 确實没有内容的地址:返回 404;如果内容是永久移除並且有明确判断依據,可以用 410。狀態碼要真實,不要用 200 加一句提示来代替。
  • 内容迁移到了新地址:用 301 指向新頁面,並保證新舊内容對應,不要一律指向首頁。
  • 參數拼出的空结果:從内鏈和模板里减少無意义入口,必要时用 robots.txt 或 noindex 控制,前提是這些頁面确實没有獨立检索價值。
  • 暂时缺内容的栏目:如果短期内會补上内容,可以先不開放訪問,等有内容再上线,比長期挂一個空壳頁更稳妥。
  • 前端渲染的站点:尽量让服務端返回正确狀態碼,或者對确實不存在的路由在服務端做判断。
狀態碼是给机器看的說明书,頁面里寫多少提示文字,都代替不了一個准确的 404。

最後提醒一点:處理软 404 改的是狀態碼和内容策略,不是把提示頁做得更漂亮。批量修改後记得抽查几條地址,確認响應头真的變了,再观察一段時間的抓取與索引變化。抓取額度和索引位都是有限的,把它們留给真正有内容的地址,比留住一堆空壳頁面更有意义。