经常有人問:新頁面到底是靠 Sitemap 让蜘蛛發現,還是靠内鏈?答案不是二選一。两者交给蜘蛛的東西本来就不一样,配合不好才會互相拖後腿。
Sitemap 是候選清單,不是抓取排期
Sitemap 的作用是告诉蜘蛛這里存在一個 URL,它解决的是發現問题,不解决值不值得現在抓。蜘蛛讀到清單後,通常只是把這些地址放進待抓队列,真正什么时候抓,還要看队列里其他 URL 的優先級、站点歷史抓取表現和服務器响應情况。
所以把 Sitemap 塞得越满越好是個誤区。清單里混進大量 404、跳轉、參數重复的地址,等于给队列加噪声,蜘蛛在這些低價值 URL 上花掉的時間,本来可以用在真正的新内容上。
内鏈提供的是上下文和重要性
内鏈和 Sitemap 最大的区別在于,連結是長在頁面里的。蜘蛛顺着連結走的时候,同时拿到几個額外信息:来源頁面的主题、連結在頁面里的位置(導航、正文還是頁脚)、锚文本,以及這個地址被多少其他頁面指向。
這些信号會影响 URL 進入队列後的優先級。一個只出現在 Sitemap、站内任何頁面都不提的地址,和一個在導航里就能点到的地址,抓取节奏通常差別明顯。
两條通道打架时的常见情况
- 内鏈指向 A 版本,Sitemap 里寫的是 B 版本(带參數或舊路径),蜘蛛看到两份互相矛盾的清單。
- Sitemap 已经更新,頁面上的連結還是舊的,蜘蛛先從内鏈走到舊地址,再被跳轉一次,白白多花一次請求。
- 内鏈把頁面藏在很深的层級,Sitemap 却把它排在最前,结果是清單触發了一次抓取,之後長期没有第二次。
比較省事的對齐方式
- Sitemap 只放規范 URL:能返回 200、可索引、不需要登入的地址,跳轉和重复版本剔出去。
- 重要頁面至少要有站内可点击入口,避免出現只有 Sitemap 知道它存在的頁面。
- 清單可以按内容類型或更新時間分片,lastmod 尽量反映真實改動,不要每次生成都刷新一遍。
- 頁面上的連結和 Sitemap 指向同一個規范地址,两條通道说同一件事,蜘蛛就不用做判断。
用日誌粗略判断哪條通道在起作用
翻服務器日誌时,可以按来源做個粗分:没有站内 Referer、直接請求頁面地址的,多半来自 Sitemap 或外部提交;带着站内 Referer 的,是顺着内鏈走過来的。观察一段時間,就能看出某個栏目主要靠哪條通道被發現。如果某個板块的抓取几乎全部来自 Sitemap,說明它在站内的入口太弱,值得补几個正文連結。
別忘了服務器這一层
無论 URL 從哪條通道被發現,最後都要落地成一次真實的 HTTP 請求。如果這段時間服務器持續返回 5xx,或者响應時間很長,蜘蛛會主動降低抓取频率,這时候 Sitemap 排得再靠前也起不到作用。抓取量下滑时,先看狀態碼和响應時間,再回头检查清單和内鏈结构。
一句话總结:Sitemap 负责让蜘蛛知道有這個地址,内鏈负责让蜘蛛觉得這個地址值得抓,服務器负责让蜘蛛真的抓得到。三者缺一环,另外两环的努力都會打折。