有一類收錄問题很隐蔽:URL 在索引里,点進去也能打開,狀態碼是 200,但頁面里没有實质内容——可能是空结果的篩選頁、已下架的商品頁、過期的活動頁、模板渲染失敗留下的空壳,或者干脆只有一句“暂無資料”。這類頁面通常被称為软 404:從协议层看它是正常頁面,從内容层看它什么都不是。
為什么 200 的空壳頁也會被收錄
搜尋引擎判断一個 URL 能不能進索引,不只看狀態碼。只要地址可訪問、返回 200、頁面有可解析的 HTML,並且有内鏈或 sitemap 把它送進来,它就有机會被抓取並進入候選池。後續是否留下,取决于頁面能不能提供獨立價值。
問题在于,空壳頁往往成批出現。一次篩選、一次分頁越界、一次商品批量下架,就可能产生几十上百個结构相同、内容為空的地址。它們彼此之間差异极小,又常常被站内連結指向,于是形成一批“看起来正常、實际没用”的收錄。
先確認它到底是不是空壳
不要只看浏览器里的顯示,前端渲染可能掩盖真實情况。
- 用抓取工具或直接請求源碼,看服務端返回的 HTML 里有没有正文。
- 對比同一模板下的正常頁面,看标题、正文、结构化資料是否都退化成預設值。
- 检查頁面是否只是“條件不满足”的提示頁,比如無库存、無權限、參數错誤。
- 看狀態碼:200、404、410 分別對應完全不同的處理路径。
核對顺序
- 先分類,再動手。把這些 URL 分成三類:有等價替代頁面的、彻底没有内容的、只是临时不可用的。三類處理方式完全不同,混在一起處理容易誤伤。
- 核對服務端返回碼。確認是真實 200 還是被前端或 CDN 改寫過的 200。有些错誤頁會被框架统一包装成 200,這種情况要先修返回逻辑。
- 查抓取日誌。看搜尋蜘蛛最近一次訪問這些地址时拿到的是什么狀態、什么内容。如果蜘蛛拿到的是空模板,收錄里出現空壳就不奇怪。
- 决定保留還是清退。有對應新頁面的走 301 指向新地址;彻底没有内容的返回 404 或 410;只是暂时下架的,保留頁面並补充說明,比留一個空白頁更合适。
- 切断入口。處理完頁面本身,還要检查 sitemap、站内列表、相關推荐、分頁里是否還在推這些地址。入口不断,新的空壳還會繼續产生。
- 观察登出节奏。狀態碼改完不代表立刻消失,索引清理需要時間。定期抽查即可,不要反复改動同一批地址。
几種常见處理方式的取舍
有等價替代内容
用 301 指向最接近的有效頁面,並确保目标頁确實能承接原来的需求。如果只是随便跳回首頁,用戶体驗和搜尋引擎的理解都會打折。
彻底没有内容
直接返回 404 或 410 是最干净的。410 表示永久移除,语义更明确。不要在 404 頁面上放大量導航和正文,否則它本身又可能被当成正常頁面。
临时不可用
短時間内會恢复的,保持頁面可訪問並给出說明,比来回切換狀態碼稳。频繁在 200 和 503 之間跳動,反而會让抓取判断變复杂。
容易漏掉的入口
- 篩選和排序參數的组合頁,尤其是預設無结果的组合。
- 分頁超出實际范围的尾頁。
- 站内搜尋的無结果頁,如果它带獨立 URL 且被外鏈引用。
- 舊版模板残留的地址,服務器仍然返回 200 和空白内容。
判断标准很简單:如果一個地址被用戶打開後會立刻關掉,它大概率也不该長期留在索引里。
软 404 的难点不在技術,而在分類。同一批空壳頁里,有的應该跳轉,有的應该消失,有的應该保留。先花時間分清楚,再動手改狀態碼和入口,比一次性批量 404 更安全。改完之後,记得把注意力放回内容生产上——减少空壳頁的产出源头,比事後清理更省事。