入口頁下线、改版或者配置出错之後,返回 404 是很常见的事。這时候很多人會問:頁面上那些指向目标 URL 的連結,搜尋蜘蛛還會不會繼續跟着抓?下面把结论、原因和驗證方法说清楚。
结论:404 和 410 頁面里的連結,通常不會被繼續跟進
主流搜尋引擎的公開說明比較一致:404(未找到)和 410(已刪除)頁面上的連結,不會被当作有效連結繼續抓取。蜘蛛拿到 404 狀態碼後,一般只记錄這個 URL 不存在,不會再解析正文,也不會把里面的連結放進待抓取队列。
5xx(服務器错誤)是另一種情况。它代表暂时性問题,蜘蛛通常會稍後重试。如果入口頁長期返回 5xx,抓取频率會下降,但它的處理逻辑和 404 並不一样。
容易踩坑的三種“假 404”
1. 软 404
服務器返回 200,但頁面内容是“頁面不存在”“内容已刪除”。蜘蛛會按 200 處理一段時間,一旦判断這是软 404,同样不會再跟進連結。這種情况比明确的 404 更麻烦,因為從狀態碼层面看不出問题。
2. 狀態碼和内容不一致
响應头寫 200,實际是空白頁或错誤頁模板;或者响應头寫 404,頁面却渲染出完整的導航和連結。前者浪費抓取配額,後者容易让你誤以為連結被發現了,其實並没有。
3. 301 之後的最终頁是 404
入口頁做了 301,但跳轉目标本身是 404。蜘蛛跟到最终 URL 後停止,連結触達不了,等于整條路径断掉。
日誌里看到蜘蛛請求入口頁,不代表連結會被抓
這是最常被誤判的一点。日誌只說明蜘蛛訪問了入口 URL,不說明它解析了頁面正文。要判断連結是否真的進入抓取流程,得看两头:
- 入口頁的响應狀態碼是不是 200,且原始 HTML 里确實包含目标連結;
- 目标 URL 的訪問日誌里,是否出現了同一個蜘蛛的請求。
只在入口頁日誌里看到大量蜘蛛請求,很可能只是它在反复確認這個 404。
入口頁必须下线时,怎么處理更稳妥
- 能保留就保留,返回 200 並保留原有的連結结构。
- 确實要下线,用 301 跳到一個仍然有效的入口頁或列表頁,不要直接给 404。
- 跳轉目标要返回 200,正文里也要有連結,別只跳到首頁却不带任何入口連結。
- 同步更新 sitemap 和站内連結,別让大量内部連結還指向已下线的入口頁。
- 核對 robots.txt,確認没有誤 Disallow 掉需要被發現的路径。
怎么驗證
比較實用的做法是挑几個入口頁做样本:
- 用抓取類工具或 curl -I 看狀態碼,確認不是软 404;
- 查看頁面源碼(不是渲染後的 DOM),確認連結确實寫在 HTML 里;
- 對比入口頁和目标 URL 的日誌時間,看目标 URL 是否在入口頁被抓後的一段時間内出現請求。
狀態碼是入口頁能不能被“讀懂”的前提。連結寫得再規范,只要狀態碼告诉蜘蛛這里没有有效内容,後面的發現和抓取就無從谈起。
總结一句:404 和 410 基本等于宣告這條路走不通,入口頁里的連結不會被繼續跟進。想让入口頁起到作用,先保證它返回 200、正文可解析,再谈連結形式和抓取效率的問题。