有些頁面蜘蛛来得很勤,狀態碼也一直是 200,但每次抓回去的都是一個空壳:没有正文,没有可跟的連結,连一句像样的說明都没有。這類頁面在日誌里看不出異常,却在持續占用抓取资源,也會把顺着内鏈走過来的蜘蛛带進死胡同。
软 404:返回 200 的空頁面
软 404 指的是服務器返回 200,但頁面實际表達的是“這里没有内容”。它和真正的 404 的差別只在狀態碼上,對蜘蛛来说却是两件事:404 是明确信号,抓過一次之後訪問频率通常會慢慢降下来;软 404 看起来是正常頁面,蜘蛛只能一次次回来確認它是不是還是空的。
常见的来源包括:
- 篩選、排序、價格区間等參數组合之後没有结果的列表頁;
- 已下架或長期缺货的商品詳情頁,模板還在,主体内容已经删掉;
- 空分類、空标簽、空作者頁;
- 站内搜尋無结果的頁面;
- 需要 JS 拉取資料、但接口失敗或未登入时留下的占位頁。
為什么它們會被反复抓
頁面本身没有内容,但指向它的入口往往還在:分類頁的分頁連結、商品推荐位、Sitemap 里的记錄、外部留下的舊連結。只要這些入口不消失,蜘蛛就會按图索骥地過来,然後带着一個空頁面回去。
更麻烦的是連結死胡同。一個空列表頁里通常没有下一個可抓的連結,蜘蛛走到這里只能掉头,回到上层頁面重新找路。如果這類頁面在站内數量很大,抓取路径就會被大量重复的“進来—掉头”占满,真正需要被發現的深层 URL 反而排到了後面。
先分清“暂时”和“永久”
處理方式取决于這個頁面以後還會不會有内容,不要一律改成 404。
暂时性空缺
缺货不久就會补货的商品頁、季节性分類,建议保留原 URL 和 200 狀態碼,同时在頁面上补充替代内容:同類商品、相關分類的入口、一句简短的說明。這样蜘蛛抓到的仍然是一張有用的頁面,也不會因為狀態碼来回變化而产生困惑。
永久性移除
商品彻底下架、分類不再使用,比較干净的做法是返回 404 或 410,並從内鏈、Sitemap 和索引文件中同步清掉。如果该 URL 有外部連結或歷史流量,可以先做 301 指向最接近的替代頁,但不要把成批下架頁统一 301 到首頁——那會让大量不同 URL 收敛到同一個地址上。
無结果頁的處理邊界
參數化列表頁最容易批量产生空頁面,可行的做法有几條:
- 超出结果范围的頁碼不要繼續渲染空列表,返回 404 或直接停止輸出分頁連結;
- 组合參數确實没有结果的頁面,可以考虑加 noindex,並從分頁連結里去掉;
- 在空结果頁放置可抓取的出口,比如回到上級分類、热门标簽,避免它成為死胡同;
- 检查 robots.txt,別把整類參數頁一次性封鎖,導致本来有内容的组合也進不来。
排查方式
從日誌入手最直接:筛出返回 200、但响應体很小或内容為空的 URL,看看它們的訪問频次和来源頁面。同时對照 Sitemap,把里面已经失效或長期為空的地址清理掉。如果站点有监控,可以给“列表頁结果數”加一個简單的埋点,结果長期為 0 的分類和标簽就能被及时挑出来。
狀態碼只是给蜘蛛的第一层反馈。一個返回 200 的空頁面,等于告诉蜘蛛“這里值得再来”,而它每次都會失望而归。
把空頁面当成需要收尾的工作,而不是留着不管的角落。這類頁面少一点,抓取资源才有机會流向真正有内容、有連結可跟的 URL。