做站点运营时,很多人盯着頁面有没有被抓到,却忽略另一個更常见的問题:蜘蛛来了,但一直围着同一批頁面轉。日誌里能看到某些列表頁、标簽頁每天被訪問十几次,而新發布的詳情頁几天都没動静。這通常不是蜘蛛偷懒,而是站内連結结构给了它一條走不出去的环路。
什么样的结构算绕圈
绕圈不是指頁面之間有連結,而是指連結把蜘蛛導向一個自我循环、又很难通向新内容的区域。判断标准有两個:一是從這里出發能不能到達站内大部分有效 URL;二是這條路径上的頁面本身有没有被检索的價值。两者都不满足时,蜘蛛停留越久,浪費越大。
几種典型的回路
分頁的双向連結
- 每頁都放首頁、末頁入口,頁碼條全量展開,上一頁下一頁不限方向,蜘蛛可以在第 1 頁和第 8 頁之間無限往返。
- 列表頁與詳情頁互相回鏈,形成层級上的死循环。
标簽與分類的交叉引用
文章底部列出所属标簽,标簽頁里又列出全部文章,文章再鏈回标簽頁。一個词條頁可能牵出几百個 URL,而這些 URL 又彼此互鏈,路径數量迅速膨胀。
全站輸出的热门與相關模块
這類模块往往對所有頁面輸出同一批連結,等于给几個頁面做了全站内鏈,而它們本身並不承担發現新内容的作用。
篩選與排序參數
颜色、價格、排序方式组合出成千上萬個地址,每個地址都能被抓,每個地址又带着完整導航,回路就被放大了很多倍。
用日誌確認是不是在绕圈
不需要复杂工具,把服務器日誌按 URL 聚合,統計一段時間内的抓取次數並排序,看头部是不是大量列表頁、标簽頁、參數頁。再看两個指标:新 URL 從上线到首次被抓的間隔,以及高频 URL 的占比。如果前 5% 的 URL 吃掉了一半以上的抓取次數,而它們並不是正文頁,基本可以確認存在回路。
抓取次數高不等于被重视,很多时候只是那條路太好走。
把回路拆開的几種做法
- 分頁保持單向:只保留下一頁和有限范围的頁碼,减少来回入口,末頁不必强行加鏈。
- 标簽頁限流:只给有检索價值的标簽保留入口,其余标簽頁不進入主導航、不寫進 Sitemap。
- 热门模块控制輸出量:一個模块放 5 到 8 條足够,不要全站铺開几十條。
- 參數頁区分對待:把排序、篩選组合頁與主列表頁的入口分開,组合頁不主動暴露連結。
- 让 Sitemap 承担告知职责:真正希望被發現的 URL 寫進清單,减少對站内連結绕路的依赖。
服務器狀態會放大這個問题
当响應變慢时,蜘蛛單次請求耗时變長,同样的抓取額度能覆盖的 URL 更少;如果它又陷在回路里,新頁面被發現的時間會被進一步拉長。所以處理绕圈和優化服務器响應,通常要一起做,單改一處效果有限。
一個简單的检查顺序
先看日誌头部 URL 是不是低價值頁;再看這些頁面之間的連結是否互指;然後從導航层開始逐层减少無差別輸出;最後观察两周,看新 URL 首次被抓的時間有没有缩短。回路拆開後,抓取次數的總量可能下降,但落在正文頁上的比例會上升,這才是更有意义的结果。