XML 站点地图最佳实践
站点地图不是页面的全量堆放处,而是交给搜索引擎的一份精选清单。本文给出收录标准、维护节奏和提交渠道的完整实践,并澄清几个流传最广的误区。
一份合格的 XML 站点地图只做一件事:把网站上规范(canonical)、可索引、返回 HTTP 200 的页面完整列出,并配上真实的 lastmod。做到这一点,再加上按时重新生成和正确提交,站点地图的维护就完成了大半。下面把每条实践逐一展开,并在文末用一张表澄清常见误区。
只收录三项都达标的 URL
- 规范页面:每组重复内容只列 canonical 那一个 URL,不要把带参数的变体、打印版、分页副本都塞进去。
- 可索引页面:排除带 noindex 的页面和被 robots.txt 屏蔽的路径,否则等于给搜索引擎发出相互矛盾的信号。
- 返回 200 的页面:404、410 和处于重定向中的旧地址都不该出现。站点地图列出的每一条,都是在对搜索引擎说「请收录我」。
登录页、站内搜索结果、下单感谢页这类没有搜索价值的页面,同样不必列入。判断标准可以简化成一句话:这个 URL 是否值得占用爬虫的一次抓取?搜索引擎分配给每个站点的抓取资源是有限的,站点地图越干净,这些资源就越多地花在你真正想被收录的页面上。
让 lastmod 真实可信
Google 在官方文档中说得很清楚:只有当 lastmod 持续准确时才会使用它。最常见的反面做法是把所有条目的 lastmod 统一设成构建时间——每次部署全站日期集体刷新,这个字段就彻底失去了参考价值。正确做法是绑定内容的实际修改时间:文章改了正文才更新日期,模板或页脚的变动不算。
changefreq 和 priority:Google 直接忽略
这两个字段在协议中是合法的,但 Google 已明确表示不使用它们,Bing 也基本如此。花时间给页面调 priority 数值,不会带来任何抓取或排名上的收益。真正影响抓取优先级的是 lastmod 的准确性、内部链接结构和页面本身的质量。已有的字段可以保留(不算错误),但不必再投入精力维护。
大小限制与拆分时机
单个文件的硬限制是 50,000 条 URL 和未压缩 50 MB。不过不必等到触顶才拆分:按内容类型(文章、产品、分类页)或语言拆成多个文件,再用站点地图索引汇总,在 Search Console 里就能分别看到每部分的收录情况,排查问题会容易得多。索引的具体用法见 Sitemap 索引文件完全指南。
gzip 压缩
站点地图可以压缩成 .xml.gz 提供,节省带宽、加快抓取。注意两点:50 MB 的限制针对的是解压后的体积,压缩并不能绕过它;同时确认服务器返回的 Content-Type 与文件实际编码一致,避免把 .gz 文件再套一层压缩。
在 robots.txt 中声明,实现自动发现
在 robots.txt 里加一行 Sitemap 指令,主流搜索引擎都能自动发现你的站点地图:
Sitemap: https://example.com/sitemap.xml
地址必须写完整绝对 URL;有多个站点地图(或一个索引文件)就写多行。这一行也是跨主机站点地图获得授权的官方途径。
提交到搜索引擎
在自动发现之外,主动提交能让搜索引擎更快知道站点地图的存在,并为你提供错误报告:
- Google Search Console:在「站点地图」栏目提交,之后可查看已发现和已编入索引的 URL 数量及具体错误。
- Bing Webmaster Tools(bing.com/webmasters):在 Sitemaps 栏目提交,站点验证可直接从 Search Console 导入。
- 百度搜索资源平台(ziyuan.baidu.com):在「普通收录」的 sitemap 方式中提交。面向中文用户的网站,这一步不要省略。
提交一次即可:搜索引擎会定期重新抓取站点地图,内容更新后无需重复提交。提交后记得回来看报告——Search Console 会给出「已发现的网页」与「已编入索引的网页」两个数字,两者差距过大通常意味着站点地图里混入了低质量、重复或被屏蔽的 URL,正好按前面的收录标准回头清理。
多久重新生成一次
理想状态是与内容同步:发布、更新或删除页面时自动重建站点地图(作为 CMS 钩子或构建流程的一环)。做不到实时,至少要保证不出现死链——一份列满 404 的过期站点地图,比没有站点地图更糟。
动态生成还是静态生成
静态生成(构建时输出文件)速度快、天然可缓存,适合按部署节奏更新的网站;动态生成(请求时实时输出)永远最新,适合内容分钟级变化的站点,但要做好缓存,避免爬虫的每次请求都触发全量数据库查询。两种方式都符合协议,按网站的更新频率选择即可。无论选哪种,都要把站点地图纳入监控:页面结构调整、路由改版、迁移域名之后,站点地图往往是最容易被遗忘的那个文件。
误区 vs 现实
| 误区 | 现实 |
|---|---|
| priority 设成 1.0 能提升排名 | Google 忽略 priority,排名与它无关 |
| changefreq 决定抓取频率 | 抓取频率取决于 lastmod 准确性、内链和页面质量 |
| 页面进了站点地图就一定被收录 | 站点地图只是抓取提示,不是收录保证 |
| 每次内容更新都要重新提交 | 提交一次即可,搜索引擎会定期重读文件 |
| 所有页面都应该放进站点地图 | 只放规范、可索引、返回 200 的页面 |
| 小网站不需要站点地图 | 维护成本极低,还能加快新页面被发现,仍然值得 |
按这份清单整理完站点地图后,用站点地图验证器完整跑一遍检查,确认格式与内容都合格。如果发现报错,常见错误修复指南里有每一种错误的处理办法。