失效連結不是小事,但也不用当成灾难
站内出現几條 404,大多數站点都躲不掉。真正需要留意的是規模:如果某個栏目、某批文章下面挂着成片的失效連結,抓取程序顺着内鏈走過去,接二连三撞上空頁面,自然會降低對這個区域的兴趣。對訪客来说也一样,点三次有两次是错誤頁,就很难再信任站内的導航。
所以這件事的重点不是一條都不能有,而是把失效連結控制在一個可解释的范围内,並且知道它們為什么會出現。
站内断鏈通常從哪来
- 改版換地址:栏目調整、文章路径重寫,舊地址没做跳轉。
- 内容下架:商品下架、活動結束、文章刪除,但内鏈還在別處引用着。
- 大小寫與斜杠不一致:手寫内鏈时把 URL 寫成了另一個版本。
- 媒体资源被清理:图片或附件挪了目錄,正文里的引用没跟着改。
- 外部引用失效:其他站或自家老頁面引用了已经不存在的内容。
- 測試頁面残留:临时上线又撤掉的頁面,連結留在導航或推荐位里。
怎么系統地把它們找出来
一、先從日誌里的狀態碼統計開始
按天統計服務器日誌中狀態碼為 404、410 的請求,把路径去重後排序,取前几十條看。這一步成本最低,而且能直接看出哪些错誤頁被反复請求——被反复請求,說明站内或站外還有連結指向它。
二、再用爬虫工具跑一遍站内連結
從首頁出發,限定同域名,把内鏈全部走一遍,導出所有返回 4xx 的地址以及它們的来源頁面。日誌看的是已经發生過的訪問,爬虫看的是目前结构里存在的連結,两個结果合起来看,基本不會有明顯遗漏。
三、顺手核對 sitemap 和站内推荐位
把 sitemap 里列出的地址抽一部分抽查,確認還能正常打開;導航、侧栏、相關阅讀這些固定推荐位,尤其容易在改版後留下舊連結。
找到之後的處理顺序
- 有對應新地址的:做 301 跳轉,指向内容最接近的那個頁面,不要一律指向首頁。
- 彻底不打算再提供的:返回 410,明确表示内容已移除,比長期返回 404 更干净。
- 内容其實還在,只是路径寫错了:修正内鏈本身,比加跳轉更合适。
- 被大量引用的重要舊地址:考虑恢复内容或做跳轉,不要只靠 404 硬扛。
- 處理完记得同步更新 sitemap,避免清單里還挂着已经失效的地址。
一個常见的偷懒做法是把所有 404 都 301 到首頁。這會让大量不同来源的地址收敛到同一個頁面,跳轉關系也變得混乱,短期看似干净,長期反而更难判断哪些頁面真的被淘汰了。
几個容易踩的坑
- 用 200 狀態碼返回一個頁面不存在的提示頁,也就是软 404,會让人和爬虫都分不清真假。
- 301 跳轉层层叠加,A 跳 B、B 跳 C,鏈條太長容易在中途被放弃。
- 只改了内鏈,忘了改 sitemap、RSS 或站内搜尋的索引資料。
- 清理失效連結时顺手删掉了本可以保留的舊内容,反而丢掉了一批已经积累起来的入口。
放進日常节奏里
不必天天查。改版、批量下架、迁移目錄之後立刻查一次;平时按月或者按季度跑一遍日誌和爬虫就够了。查完把结果和處理方式简單记一筆,下次遇到類似情况能省不少時間。