很多站点把站点地图当成上线时提交一次就完事的文件,之后几年不再动。但搜索蜘蛛判断一个站点有哪些值得抓的URL,站点地图仍然是成本最低、最可控的一条线索。问题不在“有没有”,而在“准不准、全不全、更新及时不及时”。
站点地图是长期清单,不是一次性交付物
站点地图的价值在于它由站点自己声明:哪些URL存在、什么时候改动过。蜘蛛把它当作一份参考清单,用来和站内链接、历史抓取记录做交叉验证。所以真正需要维护的是这份清单本身,而不是提交这个动作。
建议把它接进日常发布流程:新栏目上线、批量导入内容、下线旧专题时,同步更新站点地图。这样清单和站点的真实状态不会脱节太久。
分片:什么时候该拆
单个站点地图文件通常建议控制在 5 万条 URL、未压缩 50MB 以内,超出就拆成多个文件,再用一个索引文件(sitemap index)把它们列出来。但工程上限只是底线,实际拆分的判断更多来自内容结构。
- 内容明显分属不同栏目或业务线,拆开后便于单独排查问题;
- 某个板块更新频率极高(比如每日资讯),和其他板块混在一起会让 lastmod 失去参考意义;
- 部分内容由程序批量生成,需要单独观察抓取效果;
- 站点经历过改版或合并,旧内容的URL需要分批处理。
拆完之后,索引文件本身也要保持可访问、内容简洁,不要在里面塞无关信息。
lastmod 怎么写才可信
lastmod 是站点地图里最容易被滥用的字段。如果每次生成地图时把所有URL的时间戳都刷成当天,这个字段很快就失去意义,蜘蛛会倾向于忽略它,甚至降低对整份地图的信任度。
- 写内容发生实质性变化的时间,比如正文更新、价格调整、补充了新的段落;
- 不要写成生成脚本的运行时间;
- 模板、样式、广告位变动不算内容更新;
- 如果站点暂时没有可靠的时间来源,宁可留空,也不要填假数据。
一个稳定的判断标准:如果用户看不出这一页有什么变化,lastmod 就不该变。
哪些URL不该进站点地图
站点地图里混入不该出现的URL,会稀释清单质量,也让排查问题变难。
- 返回 404、410 或长期 5xx 的地址;
- 被 robots.txt 屏蔽、或页面带有 noindex 的地址;
- canonical 指向其他页面的重复内容;
- 带推广参数、会话ID、排序筛选参数产生的变体URL;
- 需要登录才能看到有效内容的页面,除非你确实希望它们被收录;
- 分页序列中间被合并或跳过的页码。
把这些排除掉之后,地图里留下的应当都是“希望被看到、且确实能看到内容”的地址。
与其他机制配合
站点地图不是孤立的。robots.txt 里声明索引文件的位置,是一个基础动作;canonical 自引用正确的页面,放进地图才更稳妥;主动推送接口适合用来补时效性,站点地图负责覆盖面,两者分工不同,不需要互相替代。
另外,抓取预算有限的站点可以观察服务器日志:地图里被频繁抓取的板块,说明蜘蛛认可它的价值;长期无人问津的板块,也许需要检查入口链接是否太浅、内容是否长期未更新。
上线后的检查清单
- 索引文件和各个分片都能正常打开,返回 200;
- 抽几条URL实际访问,确认可访问且没有跳转异常;
- 确认没有 noindex、没有 robots 屏蔽、canonical 指向自身;
- lastmod 抽样核对,和内容后台的更新时间对得上;
- 在搜索后台查看已提交与已发现的差异,找出长期未被抓取的板块。
站点地图做得好不好,短期看不出差别,但半年一年之后,它是排查“为什么这批页面一直没被发现”时最直接的一份证据。