先把 sitemap 当成一份需要维护的资产
不少站点在建站时提交过一次 sitemap.xml,之后几年都没再动过。文件还在,但里面混着已下线的页面、带一堆参数的筛选地址,甚至跳转前的旧链接。蜘蛛按图索骥地来抓,结果大量请求落在没有价值的地址上,真正需要更新的内容反而排到了后面。
站点地图的作用很朴素:给爬虫一份「哪些地址值得来看」的清单。它不保证收录,也不直接影响排名,但会明显影响抓取效率。把它当成需要定期维护的资产,比当成一次性提交任务更合适。
哪些地址不该放进 sitemap
- 返回 301、302 的旧地址:直接写跳转后的目标地址即可。
- 返回 404、410 的页面:确认不再使用就从文件里删掉。
- 设置了 noindex 的页面:既然不想被索引,也没必要占用清单。
- 筛选、排序参数生成的组合页:这类地址数量容易失控,除非它本身有独立的搜索价值。
- 登录后、购物车、后台等需要会话状态的页面。
- 同一内容的多份地址:只保留 canonical 指向的那一个。
拆分与更新时的几个细节
单文件的条数与体积
常见约定是单个 sitemap 文件不超过 5 万条 URL、未压缩体积不超过 50MB。内容量大的站点用 sitemap 索引文件指向多个子文件,按栏目或按内容类型拆分,改动时只重新生成受影响的那一份,既省资源也便于排查。
lastmod 要反映真实修改时间
有些系统会把所有 URL 的 lastmod 写成文件生成时间,每次生成整份文件就全部刷新一遍。这样写等于告诉爬虫「全站都更新了」,几次之后这个字段就失去了参考价值。更合适的做法是让 lastmod 跟着内容修改时间走,模板调整、广告位更换这类不影响正文的改动可以不刷新。
列表页与分页地址
列表页是否放进去,取决于它有没有独立价值。如果想借助列表页帮助发现详情页,可以只放前几页,没有必要把翻到第一百页的地址都列进去。分页地址大量堆积时,反而会稀释核心内容的抓取机会。
发布与自查清单
- 文件能正常访问,返回 200,Content-Type 为 XML。
- 地址使用绝对路径,与线上实际地址完全一致,包括协议、域名、大小写和末尾斜杠。
- XML 格式合法,没有转义错误导致解析失败。
- 大文件启用 gzip 压缩,减少传输体积。
- 在 robots.txt 中声明 Sitemap 地址,方便爬虫自行发现。
- 在搜索平台的站长工具里提交,并留意抓取与索引报告中的异常提示。
- 内容有更新后重新生成,确认平台能读到新的时间戳。
- 定期抽样几个地址,手动打开确认返回状态正常。
站点地图不是「提交得越多越好」的清单,而是一份需要定期删减的名单。少放一些无效地址,往往比多塞几百条更有意义。
如果站点的 sitemap 是程序自动生成的,建议把生成逻辑和内容发布流程绑在一起:内容上线、下架、更换地址时同步更新,而不是靠人工在某个时间点想起来补一次。这样维护成本最低,也最不容易出错。