站点运营

站点运营:软 404 與死鏈巡检,別让蜘蛛白跑一趟

软 404 指的是頁面已無實质内容,却仍返回 200 狀態碼,比普通 404 更难被發現。本文梳理搜尋無结果頁、下架詳情頁、空篩選頁等常见场景,给出用狀態碼與响應体大小交叉自查的方法,並附上死鏈巡检的例行节奏與處理顺序。

站点运营

站点运营:软 404 與死鏈巡检,別让蜘蛛白跑一趟

蜘蛛来一趟是有成本的:服務器要响應、頁面要下载、連結要解析。如果抓到的是一堆無意义頁面,這些成本就白花了。相比干脆利落的 404,更容易被忽略的是软 404——頁面其實已经没什么内容了,却依然返回 200 狀態碼,看起来像正常頁面。

什么是软 404,為什么它比 404 更麻烦

404 是明确的信号:這個地址没有内容。搜尋引擎收到後會逐步降低對该地址的抓取频率,確認後從索引中移除。软 404 不一样,它返回 200,正文却可能是空的、一句“抱歉,没有找到”,或者一個空列表。蜘蛛拿到的是“正常頁面”,于是可能繼續抓、繼續解析,甚至把這種空壳頁当成有效内容處理。

更麻烦的是,软 404 往往成批出現:搜尋無结果頁、篩選條件组合出的空列表、已下架商品的詳情頁、被清空的栏目頁。單看一個没什么,累积起来會占掉可观的抓取预算。

常见的软 404 场景

  • 站内搜尋無结果頁:用戶搜了一個不存在的词,頁面返回 200,正文只有“没有找到相關内容”。
  • 电商或下载站的已下架詳情頁:商品没了,頁面還在,返回 200 但只剩推荐位。
  • 篩選與排序组合頁:多個條件叠加後结果為空,狀態碼仍是 200。
  • 被清空的栏目頁:栏目下内容全部移除,頁面只剩标题和空列表。
  • 過期活動頁:活動結束、内容撤下,地址仍可正常訪問。
  • 分頁越界:超出實际頁數的 page=N 返回 200 的空列表。

怎么自查

1. 用狀態碼和响應体大小交叉看

單纯看狀態碼没用,因為软 404 就是 200。可以把抓取日誌或爬虫工具的導出结果按 URL 分组,筛出“狀態碼 200 但响應体很小”的頁面。响應体只有几百字节、正文词數极少的地址,值得逐個打開確認。

2. 抽查典型的空狀態頁

把站内搜尋、篩選、下架、過期這几類頁面各挑几個样本,用命令行工具或浏览器開發者工具看返回头,再看正文。重点確認三件事:返回的是不是 200、頁面上有没有實质内容、是否被寫進了站点地图或内鏈。

3. 看日誌里的重复抓取

如果某個地址在日誌里被反复抓取,但正文長期没有變化、内容量又很少,基本可以判断它要么是软 404,要么是低價值頁面。把這類地址列出来,比逐個猜要快得多。

處理方式

  1. 确實没有内容的固定地址,直接返回 404 或 410。410 表示永久移除,语义更明确,但不必强求,404 也够用。
  2. 临时缺内容的頁面,如果只是短暂缺货或短期下线,可以保留 200,但补充說明文字和替代入口,別让它變成一張空壳。
  3. 搜尋與篩選结果頁,一般用 robots.txt 限制抓取,或者加 noindex 标簽,两者選一個即可,同时用容易互相干扰。
  4. 分頁越界,返回 404,或者把超出范围的頁碼统一指向最後一頁。
  5. 已下架的内容,如果還有同類商品或相關文章,可以跳轉過去;没有就让它正常 404。

死鏈巡检该按什么节奏做

死鏈不是清一次就没事了。内容下线、栏目調整、外鏈失效都會不断产生新的,比較省力的做法是把它變成例行检查:

  • 每月跑一次全站爬取,導出 404 與 410 列表,按来源分類。
  • 区分“站内連結指向了死鏈”和“内容本身已下线”,前者要尽快改,後者只需確認狀態碼正确。
  • 留意被外部網站連結的地址,這類死鏈影响更直接。
  • 改版或大批量下线内容後額外跑一次,別等例行周期。
软 404 不會报错,也不會在监控里亮红灯,所以容易被長期忽略。判断标准可以很简單:如果一個頁面返回 200,但用戶打開後得不到任何有用信息,那它對蜘蛛来说也是同样的空跑。

寫在最後

處理软 404 和死鏈,本质上是在减少無效抓取。做完之後,蜘蛛會把時間花在真正有内容的頁面上,站点整体的抓取效率也更容易稳定下来。這件事不复杂,难的是持續做,建议把它和狀態碼监控、日誌巡检放進同一張例行清單。