搜尋抓取

空頁面與软 404:蜘蛛走到尽头却拿到 200

商品下架、篩選無结果、被清空的聚合頁,往往仍以 200 狀態返回。蜘蛛走到這里既拿不到内容,又把這些 URL 留在抓取队列里反复重訪。本文梳理這類空壳頁面的常见類型、從日誌與抽样中识別它們的方法,以及 404/410、301、noindex、canonical 几種收尾方式该如何搭配。

搜尋抓取

空頁面與软 404:蜘蛛走到尽头却拿到 200

蜘蛛沿着内鏈一路走過来,最怕的其實不是撞上 404,而是走到一個空壳頁面,服務器還礼貌地回了 200。前者它立刻知道该停;後者它會以為這里有内容,把 URL 记住、排队、再来,甚至顺着這個路径繼續往下铺。软 404 與空頁面难處理的地方就在這里:在抓取日誌里,它們看起来和正常頁面没什么区別。

哪些頁面容易變成空壳

  • 商品下架或長期無货,頁面框架還在,正文只剩一句提示;
  • 列表頁叠加篩選條件後没有结果,返回一個 200 的空列表;
  • 站内搜尋结果頁被外部連結大量引用,關鍵詞组合五花八门;
  • 标簽頁、聚合頁内容被清空,只剩模板占位块;
  • 改版後遗留的舊路径,落到一個通用外壳頁上。

為什么值得單列出来處理

抓取预算是有限的。蜘蛛愿意花在空頁面上的每一次請求,都是從真正會變、有新内容的頁面那里借走的。更麻烦的是路径信号:内鏈還指着這些頁面,Sitemap 里可能還留着它們,蜘蛛每轮重訪都會重新確認一次,長期占用队列位置。對用戶来说,点進去看到空頁面同样是流失。

几種收尾方式,別只用一種

確認下线的,回 404 或 410

如果這個 URL 以後不會再有對應内容,让它明确地消失比留一個空壳更干净。410 表示永久移除,语义更明确;404 也完全可以,重点是頁面本身不要再返回 200。

有替代内容的,做 301 合並

把流量導向替代頁是合理選擇,但要确保目标頁和原頁面主题相關。跳到首頁或栏目頁這種兜底跳轉用多了,蜘蛛會發現跳轉前後内容對不上,反而降低對這批 URL 的信任度。也不要让它串成長跳轉鏈。

需要保留的,用 noindex

空购物车、無结果搜尋頁這類頁面,功能上必须存在,但不必進索引。加 noindex 即可,同时要清楚:noindex 不阻止抓取,蜘蛛仍會来讀一次,所以它不能解决抓取预算被反复消耗的問题,只能解决收錄問题。

canonical 只用在内容确實同源时

如果空壳只是參數不同導致的副本,而主版本有内容,canonical 指向主版本是合适的。但如果主版本也是空的,canonical 只是把問题轉嫁给另一個 URL。

robots.txt 屏蔽要谨慎

用 robots.txt 挡住這些路径看起来省事,但被屏蔽的 URL 依然可能被外部連結带到蜘蛛面前,而且蜘蛛看不到 noindex 标簽。结果是 URL 長期留在已發現未抓取的狀態,與 Sitemap 里的记錄也會冲突。

怎么把它們找出来

  1. 翻服務器日誌:狀態碼 200 但响應字节數很小、或模板完全一致的路径,通常就是空壳;
  2. 看搜尋後台的索引报告,關注已抓取未索引里集中出現的模板類型;
  3. 按内容類型抽样,商品、列表、搜尋、标簽頁各取一批,手動点開看看;
  4. 检查 Sitemap 和内鏈,把已经下线或長期無内容的 URL 從這两處清掉。

處理的节奏

不要一次性改完所有模板。先處理被抓取频次最高、内鏈最多的那批,观察两周日誌里這些路径的請求量是否下降,再推廣到其他類型。同时记得同步三處信号:頁面本身的狀態碼、Sitemap 里的清單、站内指向它的連結。三者不一致时,蜘蛛通常會以頁面本身為准,但會多花几轮来確認。

空頁面的問题不在于它没内容,而在于它没说清楚自己没内容。给蜘蛛一個明确的终点,比让它反复走過来更省事。