蜘蛛在站内行走,靠的不是全站掃描,而是一個頁面一個頁面地顺着連結往外走。如果某個頁面没有任何可用的出鏈,蜘蛛走到這里,路径就結束了。這類頁面可以叫“死胡同”。它本身不一定有問题,但數量多了之後,會让蜘蛛的有效抓取路径變短,很多本该被發現的 URL 就没人带路了。
什么样的頁面算死胡同
判断标准其實很简單:從這一頁出發,蜘蛛還能不能繼續往下走。以下几種情况都算。
- 正文結束就没有了,頁面里没有任何指向其他内容的連結;
- 有連結,但全部指向 404、410 或被 robots 屏蔽的地址;
- 列表頁因為篩選條件過窄,结果為空,也没有“返回上一級”或推荐入口;
- 連結是用 JavaScript 渲染的,蜘蛛拿到的 HTML 里看不到 href;
- 所有出鏈都寫了 nofollow,蜘蛛不跟。
要注意的是,死胡同和孤立頁是两個不同的問题。孤立頁是没有入鏈,蜘蛛根本進不来;死胡同是進得来、出不去。前者影响“被發現”,後者影响“繼續發現”。
死胡同為什么會拖累抓取
蜘蛛的抓取時間是有限的。它每次来訪,都是在有限次數内决定先看哪些頁面。如果一條路径走到某個頁面就断了,那么這條路径上後面的 URL 就只能靠別的入口被發現。久而久之,站点會形成“入口很热闹、後面很空”的格局,内頁的抓取覆盖率不容易上去。
更常见的情况是,死胡同集中在分頁尽头、标簽末頁、归档舊頁這些地方——而它們恰恰是通往大量歷史内容的通道。
几個常见的處理做法
列表頁留一條退路
空结果頁不要直接返回 404,也不要做成纯提示頁。保留面包屑、上一級分類連結、同分類下的热门條目,让蜘蛛還有下一步可走。篩選參數造成的空頁可以加 noindex,但連結最好還是留着。
文章頁给出相關入口
相關阅讀、上一篇/下一篇、同标簽文章,這類模块不只為用戶服務,也是蜘蛛的下一跳。數量不必多,三到五條、指向真實存在且内容相關的頁面即可。
別把出鏈全堵上
nofollow 用在评论、广告、不可信外鏈上是合理的,但站内導航和正文里的相關連結被批量加上 nofollow,等于自己把路封了。這類属性和抓取路径的關系,值得單獨梳理一遍。
给舊归档頁續上連結
歷史归档翻到最後一頁往往就停住了。可以在末尾放一個“按年份或分類浏览”的入口,把蜘蛛引回主干路径。
怎么找出站点里的死胡同
- 用爬虫工具跑一遍,筛出“出鏈數為零”和“出鏈全部失效”的頁面;
- 對比服務器日誌,看蜘蛛在這些頁面上是否還有後續請求;
- 检查日誌里频繁被抓取、但從不带来新 URL 的頁面,這些往往是無效末端;
- 把结果按目錄归類,看死胡同是零散的,還是集中在某個栏目。
處理时的几條原則
- 先补連結,再考虑 noindex 或屏蔽。直接屏蔽一個末端頁,等于把它的下游也一起丢了;
- 不要為了“通路”硬塞一堆無關連結,蜘蛛也會跟着跑偏;
- 死胡同並不都需要消灭,工具頁、表單结果頁没有出鏈是正常的,重点是別让重要内容頁落在末端;
- 改完之後观察一段時間,看日誌里新出現的 URL 有没有變多,而不是立刻期待收錄變化。
把站点想象成一張路網:死胡同本身不违法,但如果主干道上全是断头路,蜘蛛能走到的地方自然就少。