结论先说:两者不冲突,各管一段
sitemap 是一份清單,作用是告诉搜尋蜘蛛這里有一批 URL;入口頁連結是在頁面里给出可点击的路径,作用是让搜尋蜘蛛在抓取时顺带發現新地址。一個偏提交,一個偏發現,同时存在通常不會被当成重复提交,也不會互相排斥。
sitemap 能做什么、不能做什么
- 能做:把没有任何頁面連結指向的孤立 URL 放進候選队列;用 lastmod 传递内容更新時間;URL 量大时用 sitemap 索引拆分,單個文件一般控制在 5 萬條以内、未压缩 50MB 以内。
- 不能做:不保證一定被抓取,也不保證一定被收錄;解决不了頁面内容重复、服務端频繁超时這類問题。
- 注意:sitemap 地址一般放在 robots.txt 里声明,方便搜尋蜘蛛找到;文件本身不要返回 404,也不要設定成必须登入才能訪問。
入口頁連結的價值在哪
入口頁里的連結除了让搜尋蜘蛛發現 URL,還附带了一层指向關系。搜尋蜘蛛抓入口頁时會把頁面里的連結放進待抓取队列,這條路径和 sitemap 是並行的。如果入口頁本身的抓取频次不错,新加的連結有时會比 sitemap 更早被發現。
別把 sitemap 当成提交了就一定抓的按钮,也別指望入口頁連結能替代 sitemap 去處理成千上萬條孤立地址。
同一 URL 出現两次,會不會重复抓
搜尋引擎一般會先做 URL 归一化再去重,同一個地址在 sitemap 和入口頁里各出現一次,通常不會因此抓两遍。至于先看哪個,没有公開的固定規則,實际表現更多取决于下面几件事:
- sitemap 里的 lastmod 和頁面實际的修改時間是否對得上;
- 這個 URL 有没有站内真實連結指向,連結處于第几层;
- 服務端响應是否稳定,有没有频繁超时或返回 5xx;
- 站点整体分到的抓取配額和抓取频次。
两個都保留时常见的几個坑
- URL 寫法不一致:sitemap 里是 https 版本,入口頁寫成 http 版本,中間還要跳一次,多一跳就多一层损耗。
- 入口頁把 sitemap 全量抄一遍:頁面体积變大,解析變慢,却没带来任何額外信息。
- sitemap 里留着 404 或長期跳轉的舊地址:搜尋蜘蛛會把這些配額花在無效地址上。
- lastmod 失真:一直不更新,更新時間信号就失效;每抓一次就改一遍,同样没有參考價值。
用日誌驗證谁在起作用
- 搜 sitemap 文件的訪問记錄,看搜尋蜘蛛多久取一次、返回碼是否正常、有没有被 robots.txt 挡住。
- 搜目标 URL 的抓取记錄,對比它首次被抓的時間和入口頁被抓的時間是否接近,大致判断走的是連結發現還是 sitemap 提交。
- 记錄新增 URL 到首次被抓的間隔,用几天到几周的样本估自己站点的节奏,而不是直接套別人的周期。
小结
入口頁連結和 sitemap 不是二選一的關系:前者负责顺着連結發現,後者负责兜住没人鏈的地址。真正需要花心思的是让两邊的 URL 寫法保持一致、让 sitemap 保持干净、让入口頁不至于臃肿,然後用日誌去驗證實际效果,而不是凭感觉反复調整。