先弄清“入口”到底有多少種
URL 發現不是某一個開關,而是站内所有可被跟随的連結叠加出来的结果。做盘点时,先把入口類型寫全,再谈優化,否則很容易只盯着 Sitemap,而忽略了別的通道。
- 全局導航與頁脚連結:覆盖一級、二級栏目,是搜尋蜘蛛進入站内主要区域的主干。
- 面包屑:為末級頁面提供一條回到上层的稳定路径。
- 正文内鏈:相關性最高的一條路,也是深层頁面被發現的常见来源。
- 列表頁與翻頁:决定歷史内容還能不能被反复訪問。
- Sitemap:补充那些内鏈层級太深、或只在特定條件下出現的 URL。
- 站外連結、RSS、结构化資料中的連結:属于外部入口,量不大但方向明确。
一次可执行的盘点顺序
盘点不必复杂,按下面三步走一遍,基本能看清站点目前的發現能力。
- 列入口:從首頁出發逐层打開頁面,把每個指向内頁的連結来源记下来,标注它出現在哪個模块。
- 核對可達性:對每個入口做一次模拟抓取,確認返回狀態碼、是否被 robots 屏蔽、連結是否带 nofollow、是否需要登入或特定地区才可见。
- 核對渲染方式:關掉脚本或直接看首屏源碼,確認連結是否真實存在于 HTML 中。只靠脚本插入的連結,能不能被跟随並不由你决定。
最容易出現断点的几個位置
- 翻頁依赖按钮点击,頁碼地址無法直接請求。
- 列表頁只渲染前若干條,後續内容要靠接口加载。
- 導航里混入了带跟踪參數的地址,同一個頁面产生多個入口。
- 末級頁面數量不少,但内部連結都指向少數几個热门頁。
- Sitemap 声明了地址,文件本身却延迟加载或返回错誤。
這些問题單獨看都不嚴重,叠加起来就會出現“頁面明明存在,却没有被抓取记錄”的情况。
用日誌反向驗證
入口清單是推测,服務器日誌是结果。把一段時間内的抓取记錄按目錄归類,看哪些目錄几乎没出現,再回到入口清單里找原因,往往比反复猜测更直接。注意区分“没有来訪”和“来訪但被拒绝”:前者多是入口問题,後者多半是狀態碼或屏蔽規則的問题。
不同規模的站点,重点不一样
内容量在几千頁以内的站点,通常靠導航、面包屑和正文内鏈就能把 URL 铺開,Sitemap 只做兜底。内容量到几十萬頁时,單靠内鏈很难覆盖,需要靠分類列表、标簽聚合和分片 Sitemap 分担,同时控制列表頁的翻頁深度,避免搜尋蜘蛛在無限翻頁里消耗時間。資料量再大,就要考虑哪些内容根本不需要被發現,先做减法。
入口之外:稳定响應對發現的影响
入口做得再全,如果服務器在蜘蛛来訪时频繁超时或返回 5xx,抓取节奏也會被打乱。核對入口的同时,顺手看一眼响應時間與错誤率,特別是列表頁和 Sitemap 這類會被反复請求的地址。
把盘点變成例行動作
站点结构會變,入口也會跟着變。建议在栏目調整、模板改版、批量上下线内容之後各做一次轻量盘点,平时按季度检查一遍導航、列表頁與 Sitemap 的可用性即可。
入口越多不代表發現效果越好。真正有意义的是:從首頁出發,用尽量少的跳轉走到每一個需要被發現的頁面,並且這條路是稳定可請求的。