Sitemap 和站内連結是搜尋蜘蛛發現 URL 的两條主要通道。很多站点在排查抓取問题时,习惯只看其中一條:要么盯着 Sitemap 提交量,要么只看内鏈是否通畅。實际上一旦两條通道對不上,就會出現两類缺口——Sitemap 里寫了但没有任何入口指向的頁面,以及頁面明明能被用戶点到、却始终不在 Sitemap 里的地址。這两類問题都不會立刻报错,但會長期消耗抓取资源。
為什么两份清單會對不上
最常见的原因是维護节奏不同。Sitemap 通常由程序按規則批量生成,而内鏈由編輯、模板、栏目配置共同决定,两者的更新周期、資料来源都不一样。其次是判断口径不同:Sitemap 生成脚本往往按“資料库里有這條记錄”就輸出,而内鏈是否出現取决于该頁面是否被某個列表頁選中、是否通過审核、是否在有效期内。口径不一致,清單自然分叉。
常见的不一致類型
Sitemap 有、内鏈没有
這類 URL 通常只能靠 Sitemap 被單獨發現。如果蜘蛛對该路径的抓取频率不高,這些頁面可能長期處于“已提交未抓取”狀態。典型场景是歷史内容、活動落地頁、需要登入或满足條件才展示的頁面。可以先用日誌確認這些地址是否真的被訪問過,再决定是补入口還是從 Sitemap 里移除。
内鏈有、Sitemap 没有
這類地址至少能被爬取路径發現,風險相對小,但如果數量庞大(比如篩選、排序、分頁产生的组合),會让抓取集中在低價值頁面上。處理方式不是简單“全部塞進 Sitemap”,而是先判断哪些值得長期保留,再决定是收敛參數還是补充提交。
两邊都有、却被規則挡住
還有一種隐蔽情况:地址同时出現在 Sitemap 和内鏈中,但被 robots.txt 屏蔽、被 meta noindex 标记,或依赖重定向才能到達最终頁。此时入口是通的,可抓取结果不是预期頁面,等于白走一趟。這類問题要结合狀態碼和 robots 規則一起看。
盘点方法
- 導出目前 Sitemap 的全部 URL,作為清單 A。
- 用站内爬取或抓取統計工具,導出從首頁出發可達的 URL,作為清單 B。
- 取差集:A−B 是只靠 Sitemap 的地址,B−A 是只靠内鏈的地址。
- 抽取日誌,核對两類地址的實际抓取次數與返回狀態。
- 按栏目、模板類型归類,找出是規則問题還是内容問题。
處理顺序建议
- 先修規則冲突:robots、noindex、重定向的問题不解决,补入口也没意义。
- 再补高價值缺口:優先给有内容、有搜尋需求的頁面补内鏈,而不是一次性把差集全部塞進 Sitemap。
- 後收敛低價值入口:對參數组合、空列表、重复排序頁做合並或屏蔽。
- 最後统一生成規則:让 Sitemap 的收錄口径與内鏈展示逻辑尽量同源,减少後續再次分叉。
驗證與观察
調整之後不要只看一天的日誌。建议按周观察两類地址的抓取次數變化、返回狀態分布,以及新頁面從發布到首次被抓取的間隔。如果差集在缩小、無效抓取在下降,說明方向是對的。需要提醒的是,入口對齐只能提高被發現和被抓取的概率,並不能保證收錄或排名。
把 Sitemap 和内鏈当成同一份入口清單的两個视图来维護,比分別優化更省事,也更接近抓取的真實情况。
如果站点栏目多、模板杂,可以先挑一個栏目做完整對照,跑通流程後再推廣到全站。這样既有可對比的样本,也不會因為一次性改動過大而看不清效果。