網站跑久了,出現訪問不到的地址很正常:文章被删、栏目改版、參數拼错、外部連結寫错。真正影响体驗和抓取的,不是“有 404”,而是這些地址返回了什么狀態碼、用戶点進去看到什么、站内還有多少連結指向它們。
一、先分清 404、软 404 和 410
這三者在搜尋引擎眼里差別很大,自查时先归類清楚:
- 标准 404:资源不存在,服務器返回 HTTP 404。這是正常且被認可的信号。
- 软 404:頁面内容寫着“内容不存在”,但 HTTP 狀態碼仍然是 200。搜尋引擎會把它当成正常頁面尝试處理,用戶也會被誤導。
- 410:明确表示资源已永久刪除。如果确定不會再恢复,410 比 404 表達得更清楚,但不是必须。
判断方法很直接:打開浏览器開發者工具的網絡面板,或执行 curl -I,看响應头里的狀態碼,別只看頁面上顯示的文字。
二、自查從几個動作開始
- 抓一批已知的失效地址,逐個看返回碼,可以手動整理,也可以從已有日誌里篩選。
- 在服務器日誌里搜狀態碼為 200 但 URL 明顯異常的记錄,這類往往是软 404。
- 抽查改版时下线的栏目和文章,確認是 404、410,還是被统一跳到了首頁。
- 检查 404 頁面自身是否正常返回 404,有些站点连错誤頁都返回 200。
三、404 頁面本身要经得起看
错誤頁是用戶和搜尋引擎都會碰到的一站,内容太空或太粗暴都不合适:
- 用一句明确的话說明地址不存在,不要只丢一個數字。
- 给出返回首頁、主要栏目或热门内容的入口,帮助用戶繼續浏览。
- 提供站内搜尋框,让用戶自己去找。
- 保持和站内其他頁面一致的头部與導航,不要让用戶以為進了別人的站点。
- 不要設定几秒後自動跳轉首頁,這類跳轉容易打断用戶,也让狀態判断變模糊。
四、内鏈與老連結最容易漏
失效地址被發現,往往不是通過直接訪問,而是通過連結。常见漏点有:
- 正文里引用了已经刪除的文章或附件。
- 導航、侧栏、頁脚里的固定連結還指向舊地址。
- 站点地图里仍保留已经不存在的 URL。
- 舊域名、舊目錄结构留下的外鏈,只有通過日誌才看得出来。
建议定期跑一遍站内連結检查,把指向 404 的連結列出来逐個改掉。外鏈不好控制,但可以根據日誌判断哪些老地址還有人訪問,再决定是否补一條 301。
五、處理节奏:该跳的跳,该留的留
不是所有 404 都值得救,判断标准可以简單一些:
- 有替代頁面、且该地址曾经有訪問量:做 301 指向内容最接近的頁面,注意一次跳到目标,不要串成跳轉鏈。
- 内容彻底刪除、确定不再恢复:保留 404 或返回 410 都可以。
- 因參數或大小寫拼错产生的地址:優先在程序层面做規范化,而不是一條條加跳轉。
- 不要把所有 404 统一跳首頁,這在用戶看来像被强行带回入口,也没有传递“该頁不存在”的信号。
六、让 404 尽早暴露
错誤頁做完了不代表結束,重点是能持續看到新增的失效地址。可以在日誌里按狀態碼統計每天的 404 數量與主要来源,數量突然上升时排查是不是某次改版或連結批量變更導致的。给几個關键路径加简單的可用性检查,也能在用戶反馈之前先發現問题。
404 不是需要消灭的東西,而是需要被看见、被解释清楚的狀態。把返回碼、错誤頁内容和連結入口這三件事對齐,大部分由失效地址带来的麻烦都能控制住。