蜘蛛每天在你站点上能走的步數是有限的。如果它把相当一部分時間花在打開那些“看起来是正常頁面、實际上什么也没有”的 URL 上,真正需要被抓的頁面就會往後排。這類頁面在日誌里表現為 200 狀態碼,看上去一切正常,問题因此很难被發現。
软 404 是什么,為什么蜘蛛分不出来
标准 404 是服務器明确告诉蜘蛛“這個地址没有内容”。软 404 則是服務器返回 200,但頁面主体為空、极短,或者只剩模板和一句提示语。對蜘蛛来说,這两種情况给出的信号完全不同:前者它會較快地把 URL 從待抓队列里淡出,後者它仍會認為這是一個有效頁面,可能繼續回訪。
判断软 404 没有统一标准,通常看三点:正文有效文字是否過少、内容是否與站点其它頁面高度重复、是否只是给用戶的提示语,例如“该商品已下架”“没有找到相關内容”。
這類頁面通常從哪里来
- 商品、房源、活動下线後 URL 還在,頁面只留一句提示
- 篩選條件组合出大量结果頁,其中很多组合本身没有匹配结果
- 分頁超出實际范围,例如只有 5 頁却存在 page=20
- 站内搜尋结果頁被内鏈或外鏈带了出去
- 内容已刪除,但栏目頁、标簽頁上仍保留着連結
它對抓取路径的三個實际影响
第一,它占用抓取時間。蜘蛛打開一個空壳頁面,同样要经歷解析、請求、下载和渲染,成本與打開一個正常頁面没有区別。
第二,它让内鏈结构失真。栏目頁上挂着大量指向空壳頁面的連結,蜘蛛顺着這些連結走,路径會不断分叉,越走越偏,真正有内容的頁面反而排到後面。
第三,它稀释站点整体的更新信号。当站点長期存在大量没有實质變化的 URL,蜘蛛對整站的回訪节奏也可能變得保守。
蜘蛛不會判断“這個頁面是否值得存在”,它只根據服務器返回的狀態和頁面上能讀到的内容做决定。空壳頁面恰恰是信号最模糊的一類。
怎么把它們找出来
比較實际的做法是日誌與頁面内容交叉比對。把一段時間内被抓取、返回 200 的 URL 拉出来,抽样看正文有效字數和與其它頁面的相似度。另一方面看抓取频次:如果同一個空壳頁面被反复抓取好几周,基本可以確認蜘蛛把它当成正常頁面在回訪。
也可以回過头看内鏈:在栏目頁和聚合頁上,有多少連結指向的是没有實质内容的頁面。
處理思路
- 頁面确實不會再有时,直接返回 404 或 410,而不是 200 加一句提示。已下架内容用 410 更明确,但不必在两者之間過度纠结。
- 不要用 302 跳到首頁来代替。跳轉會让蜘蛛把首頁当作這些 URL 的目标,反而增加判断上的混乱。
- 從内鏈和 Sitemap 中移除這些 URL。頁面本身返回 404 之後,如果站内仍有大量連結指向它,蜘蛛還會一遍遍去撞。
- 内容只是暂时缺货、之後會恢复的,保留頁面並给出明确說明,比让它變成空壳更合适。
- 篩選參數组合没有结果时,考虑让這類 URL 返回 404,或者干脆不生成連結,避免被蜘蛛大量發現。
一個容易忽略的细节
有些站点用 noindex 處理空壳頁面。noindex 不會被立即执行,蜘蛛仍需要先抓取頁面才能讀到這個标簽,所以短期内抓取量並不會下降。如果頁面确實没有存在必要,让服務器直接返回 404 或 410 通常更干脆。
蜘蛛抓取的每一步都是成本。清理掉空壳頁面,不只是减少無效抓取,也让内鏈指向的位置更明确,剩下的頁面更容易被走到。