很多站点在日誌里會看到類似的現象:蜘蛛频繁訪問首頁、栏目頁和少數热门文章,而一些其實有價值的深层頁面,几個月都没有一次抓取记錄。問题往往不在服務器,也不在 robots.txt,而在站内連結把蜘蛛“送”到那些頁面的路径太窄、太深,或者干脆只有一條。
蜘蛛在站内的行走方式
搜尋蜘蛛進入一個站点,通常從一個已知 URL 開始。它抓到一個頁面後,把頁面里的連結放進待抓队列,之後按队列逐個訪問。這個過程决定了:一個頁面要被發現,必须先有一條可抓取的連結路径從已知頁面连過去。路径越短、入口越多,被發現和被重訪的机會就越大。
所以“内鏈深度”不是装饰性的概念,而是實打實的發現机制。首頁直连的頁面,通常在第一轮或第二轮就被摸到;需要点击四五次才能到達的頁面,就要排在队列很後面,遇到抓取受限的站点,可能長期轮不到。
两個常见的深度誤区
誤区一:把連結全部堆在首頁
有些站点為了避免深层頁面被漏掉,在首頁底部塞進上百條連結。结果首頁体积變大、連結權重被摊薄,蜘蛛在首頁解析和排队的時間也變長。更關键的是,這些連結並没有形成“中間层”,纵深頁依然缺少從相關栏目、相關文章過去的路径。
誤区二:深层頁面只有一個入口
一個頁面如果只被某一篇舊文章的正文鏈過一次,而這篇舊文章本身很少被抓,那么這個頁面實际上處于半孤岛狀態。只要那條唯一路径上的頁面改動、下线或連結失效,頁面就彻底断了。
連結分散度:從多少個位置指向它
比起單纯看“几层能点到”,更實用的判断是:目标頁面被多少個不同的頁面、不同的位置指向。同一頁被栏目頁、相關推荐、正文内鏈、标簽聚合頁分別指向,蜘蛛在多次抓取中碰到它的概率會明顯提高,重訪频率也更稳定。
反過来,如果一個頁面只出現在 Sitemap 里,站内几乎没有連結,那么它主要靠 Sitemap 被動發現,重訪往往只發生在站点地图更新之後。這也是為什么 Sitemap 和內鏈要配合使用,而不是替代關系。
让路径更顺的几個做法
- 给重要頁面安排至少两到三條来自不同层級頁面的連結,而不是只挂首頁。
- 栏目頁和分類頁保持稳定的分頁連結,列表里直接给詳情頁可点击的 URL,不依赖 JS 後置渲染。
- 正文内的相關推荐,優先指向同一主题下的深层頁面,让路径沿着主题走。
- 定期检查是否出現只有一條入口、且入口頁本身流量和抓取都很少的頁面。
- Sitemap 保持干净,只放需要被抓的規范 URL,與内鏈形成互补。
用日誌確認路径是否走通
調整之後,不要只看後台的“已收錄數量”。更可靠的方式是拉一段時間段的服務器日誌,按蜘蛛的 User-Agent 過滤,統計各目錄、各层級頁面的被抓次數。观察新加的内鏈入口對應的頁面,抓取次數是否在几天到几周内出現變化。
同时留意日誌里的返回碼。如果某些深层頁面長期是 404、301 到無關地址,或者返回 5xx,那么不管内鏈做得多好,蜘蛛都拿不到有效内容。抓取路径的畅通,依赖連結可達和服務器正常响應两個條件同时成立。
内鏈解决“蜘蛛能不能找到”,服務器和 URL 規范解决“蜘蛛拿到的是不是想要的那一頁”。两者缺一,路径都不算通。
小结
蜘蛛在站内的行走路线,是由入口頁面、每层連結數量和連結位置共同决定的。與其反复提交 URL,不如先把内鏈深度控制在合理范围,让重要的深层頁面有多條来自相關頁面的路径,再用日誌核對抓取是否真的落到這些頁面上。這是一個可以持續微調的過程,不需要一次性大改。