蜘蛛眼里的“空”有三種含义
同一句“這頁没東西”,對蜘蛛来说区別很大。它先看 HTTP 狀態碼,再看响應体里有没有可用内容,最後才判断這個 URL 值不值得再来。
真 404 / 410:狀態碼明确,响應体是一個错誤提示頁。蜘蛛讀到狀態碼就停止解析,不會把頁面当正常内容處理,也不會繼續往里挖連結。
软 404:狀態碼返回 200,但頁面没有實质内容。可能是空列表、搜尋無结果、商品下架後留下的模板壳,或者只有一句“暂無資料”。蜘蛛拿到的是 200,就會按正常頁面處理。
200 的空壳:頁面有标题、有導航、有頁脚,正文区域却是空的。這種最容易被忽略,因為從狀態碼和模板上看一切都正常。
软 404 通常是怎么产生的
- 篩選或搜尋參數被静態化,生成了大量無结果的组合頁。
- 商品、文章下架後只删了資料,模板還照常渲染。
- 分頁超出最大頁數,仍然返回 200 和一個空列表。
- CMS 的错誤頁配置成 200,讀者看到的是“内容不存在”。
- URL 被改動但没做跳轉,新路径能打開,只是没有内容。
蜘蛛接下来會做什么
软 404 最直接的代價是抓取額度的浪費。蜘蛛按“這里可能有内容”的判断進来,消耗了一次請求,最後什么也没拿到。几次之後,它會把整類 URL 的抓取频次降下来,包括那些本来正常的列表頁。
另一個影响是内容质量的判断。大量 200 的空頁會让站点整体被看作低價值来源,正常頁面的重新抓取也可能被拖慢。日誌里常见的表現是:這些 URL 反复被抓,但展現和排名一直没有變化。
如果空頁面之間還互相連結,或者分頁一直往下翻,蜘蛛還可能沿着空列表越走越深,把有限的抓取预算耗在深處。
软 404 不是“頁面出错”,而是“頁面還在,但没有價值”。對蜘蛛来说,這两種情况的處理方式完全不同。
排查顺序
- 從日誌里筛出被抓取次數最多、但内容量最小的 URL 模式,比如带篩選參數或带 page= 的路径。
- 用 curl 或關閉缓存的浏览器直接請求這些 URL,確認狀態碼和响應体長度,別只看頁面在浏览器里長什么样。
- 統計這些 URL 的占比。如果超過全站被抓 URL 的两成,就需要優先處理。
- 检查模板层,確認是資料為空還是判断寫错,導致空内容也渲染出完整框架。
- 回到内鏈和 Sitemap,看這些 URL 是從哪里被带進来的。
處理原則
有内容的頁面保留,没内容的頁面给出明确信号。篩選结果為空时,返回 404 比返回 200 空頁更干脆;如果這個组合以後可能還有内容,至少加上 noindex。永久下架的頁面用 410,比 404 更明确。分頁超出范围直接 404,不要让用戶和蜘蛛一直翻下去。
別用跳轉把所有空頁都導向首頁。這样做會把首頁變成大量 URL 的共同落脚点,蜘蛛看到的是同一個頁面被反复指向,反而浪費更多抓取资源。
小结
软 404 属于那種平时不顯眼、积累起来很消耗的問题。定期從日誌里拉一遍内容量為零但被抓取频繁的 URL,配合狀態碼检查,基本就能把大部分問题定位出来。處理完之後再看一次抓取分布,通常能看到正常的落地頁開始拿到更多請求。