站点运营

站点运营:软 404 與狀態碼自查,別让失效頁面假装還活着

頁面已经没内容了,服務器却還返回 200,這類软 404 會悄悄占掉抓取预算、誤導訪客。本文梳理软 404 的常见成因、自查步骤和處理方式,给出一份可以放進日常巡检清單的检查思路。

站点运营

站点运营:软 404 與狀態碼自查,別让失效頁面假装還活着

很多站長看日誌时只關心蜘蛛来没来、来了多少次,很少關心它带走的是什么狀態碼。一個已经下架的商品頁、一篇被刪除的文章,地址還挂在導航或外鏈里,訪客点進去看到的是空白内容,服務器却老老實實返回 200。這類頁面在搜尋引擎眼里是“能正常打開”的頁面,只是内容空得离谱——這就是软 404。

软 404 和硬 404 的区別

硬 404 指服務器明确返回 404 或 410,直接告诉爬虫這個地址已经没有内容。软 404 則是内容實际已不存在,但响應头仍是 200,或者只用前端脚本做了一次跳轉,服務端狀態碼没有任何變化。两者的差別不在用戶看到什么,而在爬虫讀到什么。

  • 返回 200 的空白頁,或只有一句“内容不存在”的提示頁
  • 用 JS 定时跳轉代替服務端跳轉,狀態碼始终是 200
  • 正文被清空但模板還在,頁面上只剩标题、侧栏和頁脚
  • 分頁超出范围後仍返回 200 的空列表頁
  • 站内搜尋、篩選參數生成的無结果頁被大量暴露

為什么值得單獨查一遍

單看一两個软 404 影响有限,數量一多問题就明顯了。爬虫每次抓取都要花预算,如果一批地址抓到的都是空頁面,真正有新内容的頁面就分不到那么多抓取机會。同时,大量低质頁面會让站点整体质量判断被拉低,新發布的頁面也更难被及时發現。對訪客来说,点進一個没有出口的空頁面,通常就是直接關掉。

自查步骤

  1. 從服務器日誌里筛出返回 200、但响應体明顯偏小的 URL,先做粗筛。
  2. 用爬虫工具抓一遍全站,记錄每個地址的狀態碼和正文長度,重点看正文接近零的頁面。
  3. 手動抽查導航、頁脚、舊专题頁、友情連結里的地址,這些位置長期不變,最容易积累失效連結。
  4. 检查前端跳轉逻辑,確認是否有 window.location 之類的脚本跳轉在代替服務端跳轉。
  5. 抽查站内搜尋结果頁和带參數的篩選頁,看無结果时返回的是什么狀態碼。
  6. 把查出来的地址整理成清單,标注来源,方便分批處理。

處理方式

  • 有高度相關替代頁面的,做一次 301 直接指過去,不要串联成多級跳轉。
  • 彻底下线的栏目或商品,返回 404 或 410,不要让它繼續以 200 挂着。
  • 保留一個真正有用的 404 頁面,给出主要栏目入口和站内搜尋框,让訪客還有路可走。
  • 把前端跳轉改成服務端跳轉,让狀態碼和實际情况一致。
  • 確認 404 頁面本身没有被错誤地設定成可索引。

顺带一起看的几件事

  • 站点地图里是否還留着已经下线的舊地址。
  • 内鏈中是否有指向老路径的連結没跟着改。
  • 服務器出错时返回的是 5xx 還是伪装成 200 的错誤頁。
  • 栏目調整、专题結束、商品批量下架之後,是否有對應的連結清理動作。

別只查一次

站点每周都在變化,栏目調整、内容下线、模板改版都會造出新的软 404。比較省事的做法是把狀態碼检查固定進巡检清單,每次批量下线内容或改版之後跑一遍,發現一批處理一批,就不用等到問题堆积起来再回头翻舊帳。

狀態碼是服務器對爬虫说的第一句话,別让這句话说错。頁面没了就说没了,比含糊地回一個 200 要清楚得多。