搜尋抓取

孤岛 URL 的發現與修复:内鏈入口、Sitemap 與日誌的核對顺序

孤岛 URL 指的是站内真實存在、却没有任何可抓取入口的頁面。本文說明如何用訪問日誌與全站 URL 做差集,找出長期零抓取的頁面,再按内鏈優先、Sitemap 兜底的顺序修复,最後回到抓取记錄確認入口是否真正打通。

搜尋抓取

孤岛 URL 的發現與修复:内鏈入口、Sitemap 與日誌的核對顺序

孤岛 URL 指的是站点里真實存在、但没有任何可抓取入口指向它的頁面。它可能返回 200,内容也正常,只是蜘蛛從首頁出發沿着連結走,永遠走不到。判断一個 URL 是否孤岛,不能靠肉眼翻頁面,而要回到抓取记錄里看它有没有被抓過、是從哪個来源被發現的。

孤岛 URL 通常是怎么出現的

  • 頁面只從站内搜尋、篩選器或表單提交後跳轉到達,没有静態連結指向。
  • 舊版列表頁改版後連結被移除,但詳情頁仍在對外提供服務。
  • 連結寫在 JS 里,且渲染完成後仍未生成可抓取的 a 标簽。
  • 連結被按钮点击事件包裹,或带上了 nofollow 等属性。
  • 頁面只出現在 Sitemap 里,内鏈一侧完全断掉。

先核對,再修复

修复之前先把事實弄清楚,否則容易把“抓取得少”誤判成“内容不行”。可以按下面的顺序核對:

  1. 從服務器日誌或 CDN 日誌中筛出搜尋引擎蜘蛛的訪問记錄,按 URL 聚合。
  2. 把站点全部有效 URL(Sitemap、資料库、CMS 導出)與日誌做差集,長期零抓取的就是候選。
  3. 對候選 URL 做一次内鏈检查:站内有没有任意頁面以普通 a 标簽指向它。
  4. 確認它不是被 robots.txt、登入墙或地域限制挡住,而是真的缺少入口。

這一步的價值在于区分两類問题:一類是入口缺失,属于结构問题;另一類是入口存在但優先級太低,属于路径深度問题。两者的處理方式並不相同。

修复顺序:内鏈優先,Sitemap 兜底

内鏈是蜘蛛發現 URL 的常規通道,Sitemap 更像一份补充清單。入口缺失的頁面,優先從内容相關的頁面加上自然連結,比直接塞進 Sitemap 更稳妥。Sitemap 适合兜住那些确實难以用内鏈覆盖的頁面,比如數量庞大的長尾詳情頁。

加内鏈时的几個要点

  • 連結用标准 a 标簽加 href,不要依赖 JS 点击跳轉。
  • 锚文本寫清頁面主题,不要清一色“点击這里”。
  • 連結放在正文或與主题相關的模块中,避免集中堆在頁脚。
  • 不要一次性给大批頁面同时堆連結,先观察抓取节奏再放量。

Sitemap 的补充用法

Sitemap 里只放返回 200、可索引的規范 URL,避免把重定向、參數頁、已被合並的舊地址混進去。分片更新时保持 lastmod 與實际修改時間一致,否則蜘蛛會逐步降低對這份清單的信任。

把入口核對做成例行检查

站点改版、栏目下线、模板調整都可能無意間剪断内鏈。可以每隔一段時間重复一次上面的差集核對,重点關注新上线的内容和改版涉及的栏目。如果站点有内部搜尋、标簽頁或聚合頁,也要確認它們的輸出是普通連結而非纯接口資料,否則這些頁面對蜘蛛来说並不构成入口。

修复後怎么確認有效

不要以“已经提交”作為結束。修复後一到两周,回到日誌里看這些 URL 是否出現首次抓取,以及被抓取时的来源頁面。如果仍然没有记錄,繼續检查内鏈是否真的可解析、頁面是否可正常訪問、服務器在高並發时是否返回 5xx。抓取本身是一個持續過程,短時間没有變化属于正常范围,不必反复改動结构。

孤岛 URL 的修复,本质是把“頁面存在”變成“頁面可到達”。入口通了,後續的抓取频率和收錄情况才有讨论的基础。