站点里常有一類頁面:内容本身没問题,狀態碼也是 200,但蜘蛛几乎不會主動走到它面前。它們没有被 robots 挡住,也没有被 noindex 排除,只是站内没有任何一條普通連結指向它們。這類頁面通常被称為孤岛頁面,而它們所處的位置,往往就是抓取路径上的一條死胡同。
孤岛頁面:有地址,但没有路
URL 發現的来源大致有三種:外部連結、Sitemap 和站内連結。前两種能告诉蜘蛛“這個地址存在”,但只有站内連結能告诉蜘蛛“這個地址在站点里處于什么位置”。如果一份頁面只能通過 Sitemap 被看到,它被回訪的频率通常更低,重抓也更多依赖 Sitemap 的更新時間信号,而不是頁面自身在站内的重要性。
典型的孤岛来源包括:改版後保留下来的舊落地頁、只在投放後台使用的活動頁、只能通過站内搜尋到達的篩選结果,以及被分頁鏈丢在後面的老文章。它們不會报错,却也很难被重新發現。
几種常见的抓取死胡同
零结果與空列表頁
分類頁在没有内容时返回 200 並顯示“暂無结果”,蜘蛛會把它当作正常頁面反复抓取。這類頁面每次拿到的内容几乎一样,會持續消耗抓取资源。更稳妥的處理是:内容确實為空时返回 404 或 410,或者至少加 noindex,同时让内鏈不再指向它。
分頁鏈断在中間
不少列表頁只保留“下一頁”,不提供跳到末頁的入口。蜘蛛走到某一頁後如果找不到下一頁連結,鏈條就停住了。把分頁做成可爬的連結序列,而不是纯 JS 按钮,能让蜘蛛繼續往後走,也方便用戶直接跳轉。
只有交互才能抵達的入口
下拉加载、点击展開、選項卡切換這類交互,如果底层没有對應的 a 标簽,蜘蛛很可能拿不到後續地址。至少要给主要内容留一條普通連結作為兜底,比如列表頁提供“查看全部”的静態連結。
Sitemap 是补充,不是替代
Sitemap 适合解决两類問题:新頁面来不及被站内連結發現,以及深层頁面容易被漏掉。但它不描述頁面之間的關系。一個只靠 Sitemap 支撑的頁面,缺少内鏈上下文,被發現的路径也更單薄。較合理的做法是:重要頁面既有内鏈,也有 Sitemap 记錄;Sitemap 用来保證覆盖,内鏈用来保證路径。
路径通了,還要走得動
服務器稳定性會直接影响抓取路径的完整性。响應時間波動大、超时频繁或连接被重置时,蜘蛛可能在半路放弃已经排队的 URL,下次再来又要從入口重新走一遍。抓取路径越深,這種损耗越明顯。把首頁到重要頁面的点击距离控制在少數几层,同时保持首字节時間稳定,通常比單纯把 Sitemap 做大更有效。
排查思路
- 從首頁出發,只靠站内連結走一遍,记下哪些重要頁面走不到。
- 用 Sitemap 里的 URL 和站内可点击 URL 做比對,找出只出現在 Sitemap 中的地址。
- 检查列表頁、分頁頁、篩選頁在空结果时的狀態碼和内鏈處理方式。
- 翻服務器日誌,看這些 URL 是否被抓取過,抓取时有没有伴随 5xx 或超时。
- 修正後观察一段時間,對比這些 URL 的抓取频次是否有變化,而不是立刻下结论。
蜘蛛不會替你补上缺失的那條路。它只能沿着已有的連結往前走,走不通的地方,内容再好也容易被長期搁置。