搜尋抓取

孤岛 URL 的發現困境:内鏈入口、面包屑與列表頁的补鏈核對

孤岛 URL 指的是没有任何内鏈指向、只能靠 Sitemap 或直接訪問才知道的頁面。本文说清它們通常怎么产生,如何用 Sitemap 與站内連結图的差集把它們找出来,以及用列表頁、面包屑、相關推荐等入口逐步补鏈的核對方法,並列出补鏈时容易踩的坑。

搜尋抓取

孤岛 URL 的發現困境:内鏈入口、面包屑與列表頁的补鏈核對

一條 URL 如果只寫在 Sitemap 里,站内没有任何頁面連結指向它,抓取系統對它的判断往往偏保守:搜尋引擎不一定按 Sitemap 全量抓取,即便抓到了,之後的回訪频率通常也低于有正常内鏈入口的頁面。這類頁面习惯上叫孤岛頁面,問题不在 Sitemap 本身,而在于它缺少一條從首頁出發、能被稳定走到的通路。

孤岛 URL 通常從哪里冒出来

孤岛不是一次性生成的,多數是站点迭代的副产品。常见来源包括:

  • 改版或栏目下线,舊列表頁被撤掉,但詳情頁仍然可以訪問;
  • 後台批量導入或程序生成的詳情頁,没有寫回任何列表;
  • 分頁只放出前几頁,深頁只能靠參數翻到,正常連結层級里根本到不了;
  • 卡片是 JS 渲染的,跳轉靠 onclick 或前端路由,HTML 里没有可抓取的 a 标簽;
  • 只通過站内搜尋框、篩選條件或提交表單才能進入的頁面。

這些頁面的共同点是一致的:它們能被訪問,却不在任何一條稳定的連結路径上。

先核對哪些 URL 真的没有内鏈

判断孤岛不要凭印象,最稳的办法是做一次差集:一邊是 Sitemap(或資料库)里的 URL 全集,一邊是站内連結图里出現過的 URL。

  1. 導出 Sitemap 的分片 URL 列表,剔除已经是 301、404 的歷史地址;
  2. 用站内爬取工具從首頁出發,跟随 a 标簽抓取,记錄每個 URL 的發現来源;
  3. 两邊取差集,得到候選孤岛;
  4. 按模板分组看结果,比如詳情頁、标簽頁、分頁頁分開統計,避免一條模板的異常掩盖整体情况。

核對时要留几個干扰項:被 nofollow 的連結、JS 跳轉,以及指向了 canonical 不同地址的連結,都會让差集出現假阳性。對着候選列表抽查几條,看實际頁面是否真的没有入口。

补鏈的几個常用入口

补鏈的目标不是把孤岛頁硬塞到首頁,而是给它一條或多條合理的通路。

  • 栏目列表與分頁末頁:確認分頁可被抓取,不要让「加载更多」成為唯一入口;
  • 面包屑與层級導航:让詳情頁挂回所属分類,同时暴露上級结构;
  • 相關推荐與上下篇:同主题頁面互相指路,改善抓取路径也顺带改善站内動线;
  • 标簽頁或专题聚合:适合零散、數量多的頁面归拢;
  • Sitemap:作為补充声明保留,不要当成唯一入口。

补鏈时容易踩的坑

一次性给几千條頁面补内鏈,等于在短時間内改變整站的連結结构,抓取端收到的是一個突變信号,效果未必比逐步补来得稳。
  • 不要把孤岛頁全部堆進頁脚或侧邊栏全站輸出,連結膨胀反而稀释價值;
  • 锚文本寫清目标頁讲什么,比「点击這里」更利于判断;
  • 列表頁要能直接被抓到,需要交互才出現的連結對抓取不友好;
  • 补鏈後保留原 URL,不要顺手改成新的參數形式,否則刚建立的通路又断了。

把它做成一次可重复的核對

孤岛問题會随模板更新反复出現,建议把差集做成固定動作:新模板上线时抽查它是否自带入口;每次批量導入資料後核對新增 URL 是否挂到了列表;每隔一段時間跑一次全站差集。重点看的是發現通路是否成立,而不是單個頁面当下是否被抓,抓取结果本身有延迟,不必每天盯着看。