Sitemap 常被当成一个“提交完就不管”的文件,但它其实是站点主动整理 URL 的一份清单。搜索蜘蛛的发现路径有很多条——内链、外链、跳转、推送——sitemap 只是其中一条补充通道。它的价值不在于“提交了就收录”,而在于把那些靠内链不容易被走到的页面,用相对清晰的方式列出来。
为什么站点规模上来后要拆分 Sitemap
很多站点在早期只放一个 sitemap.xml,内容多了以后还沿用同一个文件。结果是单文件体积过大、生成时间变长,蜘蛛每次来拉取都要下载一份很长的列表,里面还混着大量已经失效或重复的地址。拆分的意义不是迎合某个数量门槛,而是让维护和抓取都更可控。
Sitemap Index 与分片组织
- 按内容类型或栏目拆分,比如文章、商品、专题各一个文件,便于单独排查问题。
- 单个 sitemap 文件里的 URL 数量控制在合理范围,常见上限是 5 万条、未压缩 50MB,接近上限前就应该考虑再拆。
- 用一个 sitemap index 文件把这些子文件聚合起来,只把 index 地址写进 robots.txt 或提交给搜索平台。
- 分片命名保持稳定,不要每次生成都换一批随机文件名,否则旧地址会残留。
lastmod 怎么维护才不添乱
lastmod 是给蜘蛛判断页面是否需要重新抓取的参考,不是装饰字段。比较稳妥的做法是:只有当页面正文、标题、结构化数据等主体内容发生实质变化时才更新这个时间,模板调整、广告位轮换、评论增加这类变化可以不动它。如果每次生成 sitemap 都把所有条目的 lastmod 刷成当前时间,蜘蛛很快会对这个信号失去信任。
另外,生成方式也要注意。小站可以定时任务跑全量;大站更适合增量生成或者按分片更新,避免每次请求都实时拼一份完整列表,既拖慢响应,也容易因为超时返回不完整的内容。
哪些 URL 不该塞进 Sitemap
- 被 robots.txt 禁止抓取的地址,写进去只会制造矛盾。
- 带排序、筛选、会话参数的动态地址,容易产生大量近似重复的条目。
- 分页的每一页不必全部提交,除非确实希望它们被单独发现。
- 已经 404、410 或者已经设置跳转的旧地址。
- 需要登录才能访问的页面,蜘蛛拿到也看不到有效内容。
日常检查清单
- 用浏览器或命令行请求 sitemap 地址,确认返回 200 且内容是 XML,而不是错误页或验证页面。
- 检查 sitemap index 里列出的子文件是否都能正常访问,有没有拼写错误或遗漏。
- 抽查若干条目,确认页面状态码正常、canonical 指向自身、没有被 robots 拦截。
- 对比服务器日志里蜘蛛对 sitemap 的抓取记录,看它是否在按预期频率拉取。
- 内容下线后,及时从 sitemap 中移除对应地址,不要只依赖页面返回 404。
把 sitemap 当作一份需要定期维护的清单,而不是一次性的提交任务,它对 URL 发现的帮助会更稳定。
最后提醒一点:sitemap 不能替代内链和导航。如果站内本身没有合理的链接结构,只靠一个文件罗列地址,蜘蛛依然很难理解页面之间的关系和权重分布。把 sitemap 当作补充线索,把内链当作主干,两者配合才更实际。