搜索抓取

软 404 与空壳页面:蜘蛛走了一趟,却什么也没拿到

很多页面返回 200,却只有一句提示语或模板内容,蜘蛛无法把它和正常页面区分开,于是反复回访。这类软 404 会占用抓取时间、让内链路径不断分叉。本文说明它们通常从哪里来、怎样从日志里找出来,以及为什么直接返回 404 或 410 往往比 noindex 更干脆。

搜索抓取

软 404 与空壳页面:蜘蛛走了一趟,却什么也没拿到

蜘蛛每天在你站点上能走的步数是有限的。如果它把相当一部分时间花在打开那些“看起来是正常页面、实际上什么也没有”的 URL 上,真正需要被抓的页面就会往后排。这类页面在日志里表现为 200 状态码,看上去一切正常,问题因此很难被发现。

软 404 是什么,为什么蜘蛛分不出来

标准 404 是服务器明确告诉蜘蛛“这个地址没有内容”。软 404 则是服务器返回 200,但页面主体为空、极短,或者只剩模板和一句提示语。对蜘蛛来说,这两种情况给出的信号完全不同:前者它会较快地把 URL 从待抓队列里淡出,后者它仍会认为这是一个有效页面,可能继续回访。

判断软 404 没有统一标准,通常看三点:正文有效文字是否过少、内容是否与站点其它页面高度重复、是否只是给用户的提示语,例如“该商品已下架”“没有找到相关内容”。

这类页面通常从哪里来

  • 商品、房源、活动下线后 URL 还在,页面只留一句提示
  • 筛选条件组合出大量结果页,其中很多组合本身没有匹配结果
  • 分页超出实际范围,例如只有 5 页却存在 page=20
  • 站内搜索结果页被内链或外链带了出去
  • 内容已删除,但栏目页、标签页上仍保留着链接

它对抓取路径的三个实际影响

第一,它占用抓取时间。蜘蛛打开一个空壳页面,同样要经历解析、请求、下载和渲染,成本与打开一个正常页面没有区别。

第二,它让内链结构失真。栏目页上挂着大量指向空壳页面的链接,蜘蛛顺着这些链接走,路径会不断分叉,越走越偏,真正有内容的页面反而排到后面。

第三,它稀释站点整体的更新信号。当站点长期存在大量没有实质变化的 URL,蜘蛛对整站的回访节奏也可能变得保守。

蜘蛛不会判断“这个页面是否值得存在”,它只根据服务器返回的状态和页面上能读到的内容做决定。空壳页面恰恰是信号最模糊的一类。

怎么把它们找出来

比较实际的做法是日志与页面内容交叉比对。把一段时间内被抓取、返回 200 的 URL 拉出来,抽样看正文有效字数和与其它页面的相似度。另一方面看抓取频次:如果同一个空壳页面被反复抓取好几周,基本可以确认蜘蛛把它当成正常页面在回访。

也可以回过头看内链:在栏目页和聚合页上,有多少链接指向的是没有实质内容的页面。

处理思路

  1. 页面确实不会再有时,直接返回 404 或 410,而不是 200 加一句提示。已下架内容用 410 更明确,但不必在两者之间过度纠结。
  2. 不要用 302 跳到首页来代替。跳转会让蜘蛛把首页当作这些 URL 的目标,反而增加判断上的混乱。
  3. 从内链和 Sitemap 中移除这些 URL。页面本身返回 404 之后,如果站内仍有大量链接指向它,蜘蛛还会一遍遍去撞。
  4. 内容只是暂时缺货、之后会恢复的,保留页面并给出明确说明,比让它变成空壳更合适。
  5. 筛选参数组合没有结果时,考虑让这类 URL 返回 404,或者干脆不生成链接,避免被蜘蛛大量发现。

一个容易忽略的细节

有些站点用 noindex 处理空壳页面。noindex 不会被立即执行,蜘蛛仍需要先抓取页面才能读到这个标签,所以短期内抓取量并不会下降。如果页面确实没有存在必要,让服务器直接返回 404 或 410 通常更干脆。

蜘蛛抓取的每一步都是成本。清理掉空壳页面,不只是减少无效抓取,也让内链指向的位置更明确,剩下的页面更容易被走到。