站点运营

站点运营:软 404 与状态码自查,别让失效页面假装还活着

页面已经没内容了,服务器却还返回 200,这类软 404 会悄悄占掉抓取预算、误导访客。本文梳理软 404 的常见成因、自查步骤和处理方式,给出一份可以放进日常巡检清单的检查思路。

站点运营

站点运营:软 404 与状态码自查,别让失效页面假装还活着

很多站长看日志时只关心蜘蛛来没来、来了多少次,很少关心它带走的是什么状态码。一个已经下架的商品页、一篇被删除的文章,地址还挂在导航或外链里,访客点进去看到的是空白内容,服务器却老老实实返回 200。这类页面在搜索引擎眼里是“能正常打开”的页面,只是内容空得离谱——这就是软 404。

软 404 和硬 404 的区别

硬 404 指服务器明确返回 404 或 410,直接告诉爬虫这个地址已经没有内容。软 404 则是内容实际已不存在,但响应头仍是 200,或者只用前端脚本做了一次跳转,服务端状态码没有任何变化。两者的差别不在用户看到什么,而在爬虫读到什么。

  • 返回 200 的空白页,或只有一句“内容不存在”的提示页
  • 用 JS 定时跳转代替服务端跳转,状态码始终是 200
  • 正文被清空但模板还在,页面上只剩标题、侧栏和页脚
  • 分页超出范围后仍返回 200 的空列表页
  • 站内搜索、筛选参数生成的无结果页被大量暴露

为什么值得单独查一遍

单看一两个软 404 影响有限,数量一多问题就明显了。爬虫每次抓取都要花预算,如果一批地址抓到的都是空页面,真正有新内容的页面就分不到那么多抓取机会。同时,大量低质页面会让站点整体质量判断被拉低,新发布的页面也更难被及时发现。对访客来说,点进一个没有出口的空页面,通常就是直接关掉。

自查步骤

  1. 从服务器日志里筛出返回 200、但响应体明显偏小的 URL,先做粗筛。
  2. 用爬虫工具抓一遍全站,记录每个地址的状态码和正文长度,重点看正文接近零的页面。
  3. 手动抽查导航、页脚、旧专题页、友情链接里的地址,这些位置长期不变,最容易积累失效链接。
  4. 检查前端跳转逻辑,确认是否有 window.location 之类的脚本跳转在代替服务端跳转。
  5. 抽查站内搜索结果页和带参数的筛选页,看无结果时返回的是什么状态码。
  6. 把查出来的地址整理成清单,标注来源,方便分批处理。

处理方式

  • 有高度相关替代页面的,做一次 301 直接指过去,不要串联成多级跳转。
  • 彻底下线的栏目或商品,返回 404 或 410,不要让它继续以 200 挂着。
  • 保留一个真正有用的 404 页面,给出主要栏目入口和站内搜索框,让访客还有路可走。
  • 把前端跳转改成服务端跳转,让状态码和实际情况一致。
  • 确认 404 页面本身没有被错误地设置成可索引。

顺带一起看的几件事

  • 站点地图里是否还留着已经下线的旧地址。
  • 内链中是否有指向老路径的链接没跟着改。
  • 服务器出错时返回的是 5xx 还是伪装成 200 的错误页。
  • 栏目调整、专题结束、商品批量下架之后,是否有对应的链接清理动作。

别只查一次

站点每周都在变化,栏目调整、内容下线、模板改版都会造出新的软 404。比较省事的做法是把状态码检查固定进巡检清单,每次批量下线内容或改版之后跑一遍,发现一批处理一批,就不用等到问题堆积起来再回头翻旧账。

状态码是服务器对爬虫说的第一句话,别让这句话说错。页面没了就说没了,比含糊地回一个 200 要清楚得多。