站点做久了,總有些地址會失效:产品下架、栏目合並、文章改名。失效本身很正常,問题在于服務器返回什么狀態碼。如果该说“這里没有了”的地址偏偏返回 200,訪客看到的是空頁面,搜尋蜘蛛却当成正常内容處理,信号就错位了。
404、410 和软 404 的区別
404 表示這個地址目前没有對應内容,但不是永久性结论;410 表示内容已永久移除,意图更明确;软 404 則是頁面 HTTP 狀態碼返回 200,可正文里寫着“抱歉,找不到该内容”,或者干脆是一個空模板。三者里,软 404 最容易被忽略,因為它從狀態碼上看一切正常。
软 404 通常從哪里冒出来
- CMS 把任何不存在的路径都套進统一模板,渲染出一個空壳頁面;
- 站内搜尋無结果时,頁面仍以 200 返回,只是列表為空;
- 列表頁被翻到超出范围的頁碼,仍然顯示一個空列表;
- 带篩選參數的组合地址没有匹配内容,頁面照常渲染;
- 内容刪除後,只在正文里加一句“该内容已下线”,狀態碼却没有改動。
自查时该看什么
- 抽查一批已知失效地址,用命令行工具或浏览器開發者工具確認返回狀態碼,而不是只看頁面長相。
- 從服務器日誌里筛出高频 404 地址,判断它們是外鏈带来的、舊版遗留的,還是站内連結寫错的。
- 检查站内搜尋、篩選、分頁這几類動態頁面,在無结果时返回的是 404 還是 200。
- 看 404 頁面本身是否可用:有没有返回首頁或相關栏目的入口,狀態碼是否正确返回。
- 批量检查内鏈與導航,確認没有指向已经不存在的地址。
處理原則
内容彻底不要了、也没有替代頁面,就让地址老老實實返回 404 或 410;只是換了地址,就做一次到新地址的跳轉,並且尽量一步到位,不要再串第二跳。批量清理时可以先從日誌里出現次數多、外鏈多的地址下手,收益更直接。
另一個常被忽略的点是:404 頁面不要做成自動跳轉回首頁。頁面一打開就跳走,用戶按回退键會被彈回去,体驗很差,也容易让大量失效地址被当成重定向處理。
狀態碼是给机器讀的,頁面文案是给人看的,两者要一致。頁面说“没有”,狀態碼也應该说“没有”。
把它變成常規動作
不必每次上线都全站掃描,但可以在栏目調整、批量下线、改版之後做一次抽查,並在监控里留意 404 數量的異常抬升。發現異常就顺藤摸瓜,多半能找到一批失效内鏈或错誤配置。這類工作不产生新内容,却能减少訪客迷路,也少浪費一些抓取资源。