蜘蛛池跑一段時間之後,入口頁的狀態會慢慢出現分化:有的頁面還在被蜘蛛反复抓,有的已经彻底没人来了,還有一部分頁面虽然返回 200,但内容早就空了或者跳到了別處。這部分「失效入口頁」如果一直挂在池子里,既占着资源,也會让蜘蛛白跑。下面说说怎么识別和處理。
三種「找不到」不是一回事
先区分清楚:
- 404:服務器明确告诉蜘蛛這個地址没有對應内容。入口頁被刪除、域名解析正常但文件没了,通常返回 404。
- 410:语义更明确,表示「曾经有、現在永久不再有」。對搜尋引擎来说,410 的刪除信号比 404 更干脆。
- 软 404:最容易被忽略的一種。HTTP 狀態碼是 200,但頁面内容是空的、提示「内容不存在」,或者只剩一個模板框架。蜘蛛拿到的狀態碼正常,實际拿不到有價值的東西。
前两種至少狀態碼是诚實的,第三種才是真正麻烦的——它不會在狀態碼統計里暴露出来。
失效入口頁對池子的實际影响
入口頁的作用是把蜘蛛引到目标頁。一個失效入口頁造成的影响大致有三层:
- 蜘蛛按計划来了,抓到的是空頁面,這次抓取基本浪費。抓取预算是有限的,浪費在這里就少了別處。
- 如果入口頁上原本挂着指向目标頁的連結,頁面失效意味着這條通路断了。
- 大面积失效會让蜘蛛對整站的抓取频率下調,恢复起来需要時間。
不必把單個失效頁看得太重,但如果失效比例持續上升,池子的整体效率會明顯變差。
怎么發現失效入口頁
- 服務器日誌里筛狀態碼。404 和 410 的訪問记錄可以直接查到,注意区分蜘蛛 UA 的請求和其他請求。
- 软 404 靠狀態碼看不出来,得看入口頁的實际可用性:頁面正文長度、是否還包含指向目标頁的連結、有没有被替換成占位内容。
- 定期抽样訪問入口頁列表,尤其是那些長時間没有蜘蛛訪問记錄的頁面。
處理方式
發現之後別一刀切,按情况分開處理:
- 頁面确定不再使用、域名還保留的,直接返回 410 或 404,不要用 200 返回一個空頁面假装還在。
- 内容搬到了新地址的,用 301 指向新入口頁,让蜘蛛顺着走。
- 只是暂时性故障(服務器重啟、文件被誤删)的,尽快恢复原状,恢复之前別急着改狀態碼。
- 入口頁上的目标連結失效的,要么換連結,要么把這個入口頁一起下掉,別留一個空壳。
几個容易养成坏习惯的地方
- 用 200 返回「该内容已刪除」的提示頁。這是典型的软 404,比直接 404 更糟。
- 入口頁 301 到一個和目标頁毫無關系的地址,蜘蛛跟過去發現是另一回事,等于白跑。
- 發現失效就立刻大批量刪除入口頁,蜘蛛短時間内集中遇到大量 404,容易把整個站的抓取节奏打乱。
- 只清頁面不清連結,別的入口頁里還挂着指向已刪除頁面的連結。
失效入口頁不用天天清,但要定期看。狀態碼诚實、連結有去處、批量操作分批做,這三点比追求「零 404」更實际。