搜尋抓取

软 404 與空壳頁:返回 200 的 URL 為什么抓不到東西

站点里總有一些 URL 能返回 200,却没有正文、没有标题,也没有下一步可走。它們不是死鏈,却同样让蜘蛛白跑一趟。這篇讲清软 404 與空壳頁的常见来源、用日誌和狀態碼把它們找出来的方法,以及從狀態碼、内鏈入口和模板三個层面怎么收拾。

搜尋抓取

软 404 與空壳頁:返回 200 的 URL 為什么抓不到東西

硬 404 是服務器明确告诉你這個地址不存在。软 404 是另一回事:地址照常返回 200,頁面也渲染出来了,但正文是空的,或者只剩下導航、頁脚和一句“暂無資料”。對蜘蛛来说,這两者的体驗差別很大——前者是明确的终点,後者是一個看起来有效、實际没有内容的地址。

什么叫软 404

蜘蛛的判断依據不是你的意图,而是它實际拿到的内容。一個返回 200 的空壳頁,在它那里首先是一個“有效 URL”,然後才是一個没有價值的頁面。這两件事叠在一起,就會占用本该分给其他頁面的抓取額度。

很多站点並不是故意這样做的,而是模板、參數和业務逻辑叠加後的副产物。

空壳頁通常從哪来

  • 篩選與排序:颜色、價格、品牌多條件任意组合,同一批商品被拼出成百上千個地址。
  • 站内搜尋:查询词進了 URL,有结果时是列表,没结果时是空頁,两種狀態共用一個地址。
  • 标簽與聚合頁:标簽下只有一两篇内容,或聚合條件太窄,頁面上拉不出東西。
  • 下架與過期:商品下架、活動結束、文章刪除,地址還在,正文已经抽走。
  • 分頁越界:超出范围的分頁地址,有的站点返回 200 加一個空列表。
  • 地区與權限:内容對部分地区或未登入用戶不可见,頁面结构還在,内容被隐藏。

為什么值得专门處理

抓取预算是有限的。蜘蛛這次把時間花在空壳頁上,留给真正需要更新的頁面的次數就少了。更麻烦的是 URL 發現:列表頁里如果挂着大量空壳連結,蜘蛛會顺着它們一层层走下去,走進一片没有内容的区域,再回头时已经绕了不少弯路。

另外,软 404 會让整站的质量判断變得模糊。返回 200 的頁面比例很高,但有效内容比例很低,長期看對抓取节奏没有好處。

先把它找出来

不用一開始就上复杂工具,先把几個資料對齐看。

  1. 抓取日誌里筛出請求量高、但正文長度異常的 URL 模式,带參數的组合往往是重灾区。
  2. 看服務器狀態碼分布,200 的占比如果遠高于有内容的頁面數,就值得往下查。
  3. 抽取一批 200 頁面,比較标题、正文長度和出鏈數量,只有壳没有肉的就是候選。
  4. 观察蜘蛛在這些頁面上的後續行為:抓完就走、不再深入,本身就是一種信号。

處理方式:狀態碼、入口、模板三件事

狀態碼要说實话

内容确實不存在,就返回 404;确定永久不再提供,可以用 410。別用 200 兜底所有異常,也別把空頁统一跳到首頁——那會把一堆地址變成同一個目标。已经進入索引但没有内容的頁面,可以先用 noindex 让它登出,再决定地址是否保留。

從入口上减少生成

參數组合生成的地址,最有效的處理是不让它出現在内鏈里。列表頁、篩選面板、分頁導航,都是蜘蛛發現這些地址的地方。

  • 篩選條件收敛到少數几個确有搜尋量的组合,其余不輸出可点击連結。
  • 搜尋無结果时,不要沿用同一套可被抓取的地址模板。
  • 分頁给出明确邊界,最後一頁之後不再輸出下一頁連結。
  • 标簽頁設定最小内容量,達不到就不生成頁面,也不放進 Sitemap。

模板层面別留空壳

很多空壳是模板渲染出来的:容器還在,循环為空。可以在服務端先判断是否有内容,没有内容就不輸出頁面主体,也不要輸出指向它的連結。列表類頁面尤其要注意,空结果不要在導航和推荐位里留下可点的入口。

蜘蛛不會因為你返回 200 就認為這個頁面有價值,它只看頁面上實际有什么。

已经存在的空壳怎么收尾

分几類處理會更清楚。有替代内容的,比如下架商品有同類可推荐,可以保留地址並给出替代入口;没有替代内容的,直接 404 或 410,同时把指向它的内鏈清理掉。數量大的话分批来,先處理被抓取最频繁的那一批,效果最直接。

软 404 不是抓取問题的全部,但它是很容易被忽略的一類。每周花一点時間看抓取日誌里的異常 URL 模式,比事後追着蜘蛛跑要省力得多。