很多站点运营者把 404 当成错誤,其實 404 本身是正常的 HTTP 狀態碼,表示资源不存在。真正麻烦的是软 404:頁面内容看起来是空的或寫着“未找到”,但服務器返回 200。搜尋蜘蛛收到 200 後,會把该 URL 当作有效頁面處理,繼續抓取、解析,甚至尝试索引。结果就是抓取配額被大量空頁面消耗,站点质量信号也會被稀释。
什么是软 404,為什么蜘蛛會誤會
软 404 通常指 URL 不存在或内容已刪除,但响應狀態碼不是 404,而是 200 或其他成功狀態。蜘蛛判断頁面有效性,主要看 HTTP 狀態碼和頁面主体,並不看你頁面上寫没寫“404”。如果返回 200,它就會按正常頁面對待。對于使用蜘蛛池或外部連結引導抓取的站点,如果被引来的 URL 大量落在软 404 上,抓取预算會白白浪費。
提示:搜尋蜘蛛不會因為頁面里寫着“404”就認為它是错誤頁,狀態碼才是更明确的信号。
常见软 404 来源
- CMS 主题或插件把不存在的文章渲染成空模板,狀態碼仍然是 200。
- 前端路由的 catch-all 路由没有返回 404,SPA 首屏直接返回 200。
- 站内搜尋無结果頁,返回 200 並展示“没有找到相關内容”。
- 過期商品、下架内容只是隐藏了入口,URL 仍可訪問且返回 200。
- 參數组合或篩選無结果,頁面返回 200,但列表区域是空的。
- CDN 或反向代理缓存了错誤頁,把原本的 404 缓存成 200 分發。
- 服務器重寫規則把不存在的路径统一指向首頁或某個落地頁,返回 200。
自查步骤:從狀態碼開始
- 准备一批典型 URL:随机不存在的路径、已刪除内容、空搜尋结果、無结果篩選、舊參數頁。
- 用 curl -I 或浏览器開發者工具查看响應狀態碼,不要只看頁面文字。
- 對比正常内容頁、404 頁、410 頁的狀態碼和响應头,確認没有互相矛盾。
- 检查 CMS 的 404 模板設定,確認主题没有强制返回 200。
- 检查前端路由:服務端渲染或预渲染时,未知路由應返回 404;纯客戶端路由至少不要返回 200 空壳。
- 检查 CDN 缓存規則,避免把 404 頁面缓存成 200 並長期分發。
- 查看服務器訪問日誌和搜尋蜘蛛抓取日誌,找出返回 200 但内容為空的 URL 模式。
處理原則:该 404 就 404,该 410 就 410
内容彻底刪除且没有替代頁面,可以返回 410,告诉蜘蛛资源永久消失。暂时不可用可返回 404,但不要用 302 長期跳首頁。把所有错誤 URL 都 301 到首頁,容易产生大量软 404 或無效重定向,用戶和蜘蛛都得不到明确答案。保留有用的 404 頁面,给用戶推荐相關栏目和搜尋框,但狀態碼必须是 404。
减少软 404 的日常動作
- 内容下线时同步检查内鏈、站点地图和導航,刪除或更新指向已刪除頁面的連結。
- 站内搜尋無结果頁設定 noindex,避免被当成正常列表頁。
- 篩選和參數頁在無结果时返回 404 或至少 noindex,不要輸出空列表给蜘蛛。
- 定期抽样检查蜘蛛抓取日誌中的 200 狀態空頁面,按目錄匯總處理。
- 如果使用蜘蛛池或外部連結引導抓取,先確認落地頁有效,別把蜘蛛引到一堆软 404。
別把 404 当成洪水猛兽
正常 404 是網站健康的一部分,說明服務器在正确回應不存在的资源。真正需要担心的是软 404 和错誤的狀態碼组合。把狀態碼、頁面内容、内鏈和站点地图對齐,蜘蛛的抓取预算才不會浪費在空頁面上,用戶也不會在“看似正常”的错誤頁里迷路。