訪客打错一個字母、点到一個舊連結,或者從外部網站跳進来,最後落到哪儿,往往就是你的 404 頁面。這個頁面平时没人看,出問题的时候却天天有人看。更麻烦的是,不少站点的错誤頁返回的狀態碼不是 404,而是 200——對訪客来说只是看到一句“頁面不存在”,對搜尋引擎来说却是一個正常頁面。這類情况通常被叫做“软 404”。
先確認错誤頁返回的狀態碼
打開浏览器開發者工具的網絡面板,或者用 curl 請求一個肯定不存在的地址,看响應头里的狀態碼。理想结果是 404 或 410。如果看到 200,說明服務器把错誤頁当成了正常内容返回。
- 200:最常见的問题。多數是服務器配置了统一的错誤文档重寫,或者框架路由把所有未匹配請求都指向同一個頁面,却没有設定狀態碼。
- 301 / 302:错誤頁被跳轉到首頁。短期看訪客体驗還行,長期看會让蜘蛛把大量不存在的地址当成有效地址,反复抓取。
- 404:狀態碼正确,但還要看頁面本身有没有可用内容。
- 403 / 500:要分清是错誤頁配置寫错了,還是服務端真的在报错。
软 404 通常從哪来
软 404 很少是有人故意做出来的,多數是配置的副产物。可以按下面几處對照排查:
- 服務器或 CDN 上配置了“找不到頁面时统一顯示 index.html”,返回碼跟着變成 200。
- 單頁應用把所有路由都交给前端處理,服務端只用 200 返回同一個 HTML 外壳。
- 内容管理系統里,刪除文章後仍保留一個空壳頁面,标题和正文都是空的。
- 搜尋结果頁、篩選頁在無结果时返回 200,外加一大段提示文字。
- 參數寫错或頁碼超出范围时,頁面悄悄回退到第一頁並返回 200。
错誤頁應该给訪客什么
狀態碼對了,只解决了一半。訪客点進来是想找東西,不是想看一句冷冰冰的报错。一個能用的错誤頁至少應该包含:
- 一句清楚的话,說明這個地址找不到,而不是让訪客怀疑自己網絡有問题。
- 回到首頁的入口,以及站内主要栏目的連結。
- 一個站内搜尋框,让訪客能直接找想要的内容。
- 如果内容被迁移過,给出新地址的入口或几條相關推荐。
- 與站点整体一致的样式,別让訪客以為跳到了別的網站。
错誤頁和蜘蛛之間要注意的事
如果错誤頁返回 404,通常不需要額外加 noindex,蜘蛛看到狀態碼就不會收錄。真正需要注意的是两種情况:一種是狀態碼為 200 的软 404;另一種是错誤頁被模板带上了全站導航、推荐和大量連結,蜘蛛會在無效頁面上把站内结构重新走一遍,浪費抓取预算。
另外,错誤頁上的連結尽量指向長期稳定的地址。別把临时活動頁放上去,活動一結束,又變成新的 404。
一份可以照着做的自查清單
- 用 curl 或開發者工具確認不存在的地址返回 404,而不是 200。
- 检查服務器、CDN、框架路由的兜底規則,看有没有把错誤頁当成正常頁面返回。
- 抽查一批已刪除内容的舊地址,看它們是 404、410,還是跳回首頁。
- 確認错誤頁包含返回首頁入口和站内搜尋。
- 检查错誤頁有没有被統計代碼、站内推荐拖成一張很重的頁面。
- 用电脑和手机各打開一次,確認排版没有错位。
- 把定期抽查错誤頁寫進运维或編輯的例行事項里。
错誤頁不是给搜尋引擎看的,是给走错路的訪客看的。先把它做成一個说得清、走得出去的頁面,再谈別的。