一條内鏈断掉,影响的不只是一頁
蜘蛛發現 URL 的主要方式仍然是顺着連結走。站点里每個内鏈都相当于一條小路,蜘蛛沿着這些路走到新的頁面。如果某條路上出現死鏈,蜘蛛走到一半停下来,後面的頁面就少了一個被發現的机會。單條死鏈看起来微不足道,但当它們出現在導航、列表頁、侧邊推荐位這些高频入口时,影响會被放大很多倍。
404 本身不是問题,指向它的連結才是
頁面被刪除後返回 404,這本身是正常的服務器行為,蜘蛛也能理解。真正需要處理的是:站内還有多少個頁面在連結到這個已经不存在的地址。只要内鏈還在,蜘蛛每次抓取都會顺着走一次,拿到一個 404,然後原路返回。這個過程不产生任何價值,却在消耗抓取配額。
更麻烦的是层級断裂。如果某個栏目頁的列表里有一半連結是死鏈,蜘蛛在這個頁面能走的下一步就少了一半,藏在後面的新 URL 也就更难進入抓取队列。
软 404 和空頁面更隐蔽
有一類情况比 404 更难處理:URL 返回 200,但頁面内容是空的、报错的,或者是一個“暂無结果”的列表頁。對蜘蛛来说,狀態碼是正常的,但頁面没有任何可抓取的内容,也没有有效的出口連結。這類頁面往往由參數、篩選條件、已下架商品的残留地址产生,數量可能比真正的 404 多得多。
處理顺序建议:先看日誌里哪些地址被反复抓取却始终没有變化,再回查這些地址是否由站内連結产生。如果答案是肯定的,說明内鏈结构里存在需要清理的入口。
断鏈會從几個方向消耗抓取机會
- 浪費請求次數:蜘蛛每次訪問死鏈,都是一次没有产出的抓取。
- 打断路径:依赖這條連結才能被發現的頁面,可能長時間停留在队列之外。
- 丢失锚文本:指向失效頁面的連結文字,本来可以传递主题信息,現在無處可去。
- 影响结构判断:大量内鏈指向無效地址,站点层級在抓取时顯得混乱,深层頁面的到達顺序會被打乱。
该用 301 還是 404
判断标准很简單:這個 URL 有没有等價的替代頁面。有,就用 301 指向最相關的新地址,並且只跳一跳,不要做成鏈條。没有,就老老實實返回 404,不要用 200 的空白頁去糊弄。對于已经迁移過内容的站点,记得把舊的 Sitemap、内鏈、外鏈都對照检查一遍,只改服務器配置是不够的。
把断鏈检查放進日常节奏
- 定期抓取本站的主要入口頁,收集返回 4xx 的地址。
- 對照服務器日誌,找出被蜘蛛反复訪問却始终没有内容的 URL。
- 定位這些 URL 的来源:導航、列表頁、正文内鏈還是 Sitemap。
- 按来源逐個處理,能跳轉的做 301,该删的把連結一並删掉。
- Sitemap 里同步移除失效地址,避免繼續把蜘蛛引向死路。
内容下线时顺手做的事
刪除頁面时,先搜尋站内有哪些地方連結到它,把連結替換成新的目标,再刪除頁面。這個顺序看起来麻烦,但比事後靠工具掃一遍要省事得多。列表頁和推荐位尤其要检查,它們是产生死鏈最多的地方。
顺带提一句 5xx
服務器間歇性报错和死鏈是两回事,但结果相似:蜘蛛来了拿不到東西。短時間的 5xx 蜘蛛通常會稍後再来,如果持續時間較長,抓取频率會明顯下降,恢复需要一段時間。所以稳定性問题要和連結维護分開看,却都不能拖。
抓取路径是長期维護出来的,不是一次性優化出来的。定期清理断鏈,本质上是在给蜘蛛留一條走得通的路。