站点规模变大后,单个 Sitemap 往往装不下所有 URL。分片和索引文件是常见做法,但它不是把文件切碎就完事。分片怎么切、索引文件放在哪、分片内容是否可访问,都会影响搜索蜘蛛能不能顺利发现 URL。
分片拆分:按什么维度切更合理
协议允许每个 Sitemap 最多放 50000 个 URL,未压缩大小不超过 50MB。实际拆分时,不必卡着上限,可以按内容类型、更新频率或栏目层级来分。这样后续排查和更新都更清楚。
- 按内容类型:文章、商品、专题、帮助文档各自一个分片,便于观察哪类 URL 发现慢。
- 按更新频率:高频更新的列表页和低频的静态页分开,减少每次全量重写。
- 按语言或地区:多语言站点分开,避免不同语言 URL 混在一起。
分片数量不是越多越好。几十个分片还算好管理,几百个就要考虑索引文件是否清晰、分片地址是否规则。
索引文件要能被稳定发现
Sitemap 索引文件本身也是一个入口。它需要被提交到搜索资源平台,并在 robots.txt 中声明。索引文件里列出的分片地址必须是可访问的绝对地址,返回 200 状态码,内容类型为 XML。如果分片开了 gzip,索引里的地址和实际返回要一致。
- 索引文件不要嵌套索引文件,层级尽量只有一层。
- 分片地址不要带随机参数或会话参数。
- 分片里的 lastmod 要真实,不要每次生成都改成当前时间。
- 分片文件不要设置 noindex,也不要用 robots.txt 屏蔽。
分片内容与内链互相验证
分片负责告诉搜索蜘蛛“这里有 URL”,但不保证它一定会抓取。要判断发现是否正常,可以把分片里的 URL 和站内链接、服务器日志交叉看。如果某个分片里的 URL 长期没有抓取记录,可能是分片本身有问题,也可能是这些 URL 缺少内链入口。
分片解决的是发现入口问题,抓取和索引还取决于页面质量、服务器响应和内链结构。不要把分片当成收录保证。
更新、下线与分片维护
分片不是生成一次就不用管。内容更新、页面下线、改版换地址,都要同步到分片。处理时可以按下面顺序核对:
- 确认新 URL 已经能正常访问,返回 200,并且页面内容不是空壳。
- 把新 URL 加入对应分片,更新 lastmod,重新提交索引文件。
- 下线的 URL 从分片中移除,同时保留旧地址返回 410 或 404 一段时间,不要让旧地址直接跳向无关页面。
- 改版换地址时,用 301 把旧地址指向新地址,并更新分片中的地址。
- 观察日志里分片地址和页面地址的抓取频率,确认没有出现只抓分片不抓页面的情况。
常见配置错误
- 分片地址返回 HTML 错误页,搜索蜘蛛拿到的是错误内容。
- 索引文件里写的是相对地址,解析后指向不存在的路径。
- 分片大小写不一致,同一批 URL 出现两种写法。
- 把不同协议、不同域名下的 URL 混在同一个索引里。
- 分片里包含大量重定向地址或参数地址,增加无效抓取。
大型站点的 URL 发现,往往不是缺一个入口,而是入口太多、太乱或者中途断掉。定期抽查索引文件、分片文件和日志中的抓取痕迹,比一次性生成全部文件更有用。