蜘蛛抓取站点的過程,本质上是一條路径的遍歷。路径上如果散落着大量無效地址——已经删掉的頁面、拼错的參數、空结果的列表頁——蜘蛛每次来訪都要在這些地方花掉一部分抓取時間,真正需要更新的頁面得到的訪問就少了。把無效路径收敛掉,是搜尋抓取里容易被忽略、但收益比較稳定的一件事。
先分清硬 404 和软 404
硬 404 指服務器明确返回 404 或 410 狀態碼,蜘蛛收到後會把该地址标记為不存在,之後基本不再回訪。软 404 則相反:地址返回的是 200,但頁面内容為空、只剩導航和頁脚,或者顯示“没有找到相關内容”。從蜘蛛的角度看,這次抓取是成功的,它並不知道這條 URL 其實是無效的。
软 404 的麻烦在于反复消耗。一個返回 200 的空頁面,蜘蛛可能會在接下来的几周里持續回訪,確認内容有没有變化。如果有几千個這样的地址,抓取配額就被悄悄吃掉了一部分。
無效路径通常從哪来
- 改版或栏目調整後,舊 URL 没有做跳轉,直接變成 404;
- 篩選、排序、分頁參數被外部或内部連結带出来,组合出大量不存在的地址;
- 内鏈指向已下架的商品、已合並的文章;
- CMS 自動生成的标簽頁、作者頁,内容為空也照常輸出;
- 外部站点早年留下的連結,對應内容早已下线。
排查顺序
- 從服務器訪問日誌或站点的抓取統計里,按狀態碼筛出 404、410,观察集中在哪些目錄;
- 對這些地址做抽样訪問,確認返回碼是否與日誌一致,排除 CDN 或反向代理改寫狀態碼的情况;
- 检查是否存在“返回 200 但内容空”的頁面,重点看空搜尋结果頁、空分類頁、已售罄商品頁;
- 回到内鏈,看這些地址是從哪些頁面被連結出去的。源头不修,清理只是暂时的。
怎么處理更合适
有等價替代頁面的,用 301 指向最接近的那一個。注意是“最接近”,不要全部指向首頁,否則蜘蛛會把跳轉鏈当成噪音。内容确實永久下线的,直接返回 410 或 404,比長期挂一個空頁更干净。
對于篩選頁、搜尋頁這類天生會生成大量组合地址的模块,可以這样處理:無结果时返回 404,或者让這些頁面不進入内鏈体系。需要注意的是,noindex 和 404 不是一回事:被 noindex 的頁面仍然會被抓取,只是不進索引,如果數量很大,抓取上的開销依然存在。
判断标准可以很简單:這個地址對用戶有没有價值。没有價值又會被蜘蛛反复訪問,就是在浪費抓取。
分頁和列表頁的邊界
列表頁翻到末尾後,如果程序還能繼續生成空頁,蜘蛛就會顺着頁碼一路走下去。给分頁设定合理的上限,超出范围返回 404,同时不要在頁面上輸出指向空頁的“下一頁”連結,能让抓取停在该停的地方。
顺带看一眼服務器表現
無效地址過多有时不只是内容問题。如果日誌里出現大量 404 集中在某個時間段,並且伴随响應時間拉長,可能是連結被批量請求或程序循环調用,值得查一下是否影响了正常頁面的响應速度。服務器响應變慢时,蜘蛛的抓取节奏通常也會跟着變慢。
把它變成例行检查
不需要每天盯,按月做一次即可:抓一份 404 列表,看新增的部分来自哪里,修掉内鏈源头,處理掉确實無效的地址。坚持几轮之後,日誌里的無效抓取會明顯减少,剩下的抓取预算自然落在有效頁面上。這個過程不會立刻带来可见的排名變化,但它让蜘蛛的每一次訪問都更接近有用的内容。