站点地图(Sitemap)不是让蜘蛛抓取的主力,内鏈才是。它的價值在于把内鏈不太好覆盖的、或者刚刚生成的 URL 提前告知搜尋引擎,减少“地址被發現但迟迟不進队列”的情况。但 Sitemap 本身有格式和數量上的硬约束,寫得不規范反而會拖慢處理。下面按文件格式、lastmod、與其他通道的分工、上线後的核對四块来说。
一、文件本身的硬约束
單個 Sitemap 文件最多 50,000 條 URL,未压缩狀態下不超過 50MB。超過這個規模就要拆成多個子文件,再用 sitemap index 匯總成一個索引文件。
- 索引文件可以指向多個子文件,子文件里的 URL 需要與所在域名一致,跨域需要先在對應工具里驗證權限
- 只放返回 200 且允许被索引的地址,301、404 以及被 robots.txt 拦截的地址不要放
- 用 gzip 压缩是可以接受的,但压缩並不能突破 50,000 條的上限
- XML 声明、命名空間、编碼要規范,格式错誤會導致整個文件解析失敗
二、lastmod 要如實填寫
lastmod 是给蜘蛛判断“是否值得重訪”的參考字段。常见的两種做法都會让它失去信息量:一是全站统一一個時間戳,二是每次生成文件时全部刷新一遍。
更稳妥的做法是,只在正文、主要结构化資料、價格或库存這類實质内容發生變化时,更新對應 URL 的 lastmod。模板調整、样式修改、導航改動不必更新。如果站点是全量生成頁面,至少要保證 lastmod 與頁面上可见的更新時間一致,否則两邊對不上,反而降低這個字段的可信度。
三、和其他通道的分工
Sitemap 解决的是“告诉你有這個 URL”,並不解决“蜘蛛愿意爬”。真正决定蜘蛛能不能走到頁面上的,還是可以稳定点击的内鏈路径。
- 重要頁面仍要有内鏈入口,Sitemap 只是补充,不要拿它替代導航和正文連結
- 被 canonical 收敛掉的重复地址,Sitemap 里應当放 canonical 指向的那一個
- 分頁和篩選參數頁一般不必全量放進去,只挑有獨立價值的放
- robots.txt 里被 Disallow 的目錄不要出現在 Sitemap,两邊冲突时以抓取規則為准
四、提交之後的核對
提交文件位置只是把地址告知搜尋引擎,處理需要時間,也不保證每一條 URL 都會被抓取或收錄。核對时主要看两個地方:服務端日誌里這些 URL 有没有出現蜘蛛請求,以及站長工具里 Sitemap 的讀取狀態和已發現 URL 數。
- 先確認文件能被正常訪問,返回 200,Content-Type 正确
- 看报告里的“已發現 URL 數”與實际條數是否接近,差得太多通常是解析失敗或部分條目被忽略
- 抽样几個 URL,看日誌里有没有對應的抓取請求,没有就回到入口頁和内鏈去检查
- 長期没被抓取的 URL,先判断它是否属于低價值頁面,再决定是补内鏈還是從文件里移除
五、几個常见错誤
- URL 寫成相對路径,或者带上了會话參數
- 大量 404、302 地址長期留在文件里不清理
- 索引文件里再嵌套索引文件
- 一次提交几十萬條几乎相同的頁面,稀释了處理優先級
把 Sitemap 当作通知渠道,而不是入场券。
定期维護比一次性全量提交更重要。建议每月核對一次文件里的狀態碼分布,把已经失效或已经合並的地址清掉,保持文件短小准确。數量不多但都是有效 URL,處理效率通常好過塞進一大批低质量地址。