搜尋抓取

404 與软 404:断鏈怎样影响 URL 發現和抓取路径

站内死鏈看似小事,却會打断蜘蛛的抓取路径、消耗抓取配額,還會让深层頁面失去被發現的机會。本文從 404、软 404 和空结果頁三種情况出發,說明断鏈如何影响 URL 發現,给出 301 與 404 的選擇标准,並整理了一套可以放進日常节奏的断鏈检查與清理流程。

搜尋抓取

404 與软 404:断鏈怎样影响 URL 發現和抓取路径

一條内鏈断掉,影响的不只是一頁

蜘蛛發現 URL 的主要方式仍然是顺着連結走。站点里每個内鏈都相当于一條小路,蜘蛛沿着這些路走到新的頁面。如果某條路上出現死鏈,蜘蛛走到一半停下来,後面的頁面就少了一個被發現的机會。單條死鏈看起来微不足道,但当它們出現在導航、列表頁、侧邊推荐位這些高频入口时,影响會被放大很多倍。

404 本身不是問题,指向它的連結才是

頁面被刪除後返回 404,這本身是正常的服務器行為,蜘蛛也能理解。真正需要處理的是:站内還有多少個頁面在連結到這個已经不存在的地址。只要内鏈還在,蜘蛛每次抓取都會顺着走一次,拿到一個 404,然後原路返回。這個過程不产生任何價值,却在消耗抓取配額。

更麻烦的是层級断裂。如果某個栏目頁的列表里有一半連結是死鏈,蜘蛛在這個頁面能走的下一步就少了一半,藏在後面的新 URL 也就更难進入抓取队列。

软 404 和空頁面更隐蔽

有一類情况比 404 更难處理:URL 返回 200,但頁面内容是空的、报错的,或者是一個“暂無结果”的列表頁。對蜘蛛来说,狀態碼是正常的,但頁面没有任何可抓取的内容,也没有有效的出口連結。這類頁面往往由參數、篩選條件、已下架商品的残留地址产生,數量可能比真正的 404 多得多。

處理顺序建议:先看日誌里哪些地址被反复抓取却始终没有變化,再回查這些地址是否由站内連結产生。如果答案是肯定的,說明内鏈结构里存在需要清理的入口。

断鏈會從几個方向消耗抓取机會

  • 浪費請求次數:蜘蛛每次訪問死鏈,都是一次没有产出的抓取。
  • 打断路径:依赖這條連結才能被發現的頁面,可能長時間停留在队列之外。
  • 丢失锚文本:指向失效頁面的連結文字,本来可以传递主题信息,現在無處可去。
  • 影响结构判断:大量内鏈指向無效地址,站点层級在抓取时顯得混乱,深层頁面的到達顺序會被打乱。

该用 301 還是 404

判断标准很简單:這個 URL 有没有等價的替代頁面。有,就用 301 指向最相關的新地址,並且只跳一跳,不要做成鏈條。没有,就老老實實返回 404,不要用 200 的空白頁去糊弄。對于已经迁移過内容的站点,记得把舊的 Sitemap、内鏈、外鏈都對照检查一遍,只改服務器配置是不够的。

把断鏈检查放進日常节奏

  1. 定期抓取本站的主要入口頁,收集返回 4xx 的地址。
  2. 對照服務器日誌,找出被蜘蛛反复訪問却始终没有内容的 URL。
  3. 定位這些 URL 的来源:導航、列表頁、正文内鏈還是 Sitemap。
  4. 按来源逐個處理,能跳轉的做 301,该删的把連結一並删掉。
  5. Sitemap 里同步移除失效地址,避免繼續把蜘蛛引向死路。

内容下线时顺手做的事

刪除頁面时,先搜尋站内有哪些地方連結到它,把連結替換成新的目标,再刪除頁面。這個顺序看起来麻烦,但比事後靠工具掃一遍要省事得多。列表頁和推荐位尤其要检查,它們是产生死鏈最多的地方。

顺带提一句 5xx

服務器間歇性报错和死鏈是两回事,但结果相似:蜘蛛来了拿不到東西。短時間的 5xx 蜘蛛通常會稍後再来,如果持續時間較長,抓取频率會明顯下降,恢复需要一段時間。所以稳定性問题要和連結维護分開看,却都不能拖。

抓取路径是長期维護出来的,不是一次性優化出来的。定期清理断鏈,本质上是在给蜘蛛留一條走得通的路。