Sitemap 常被理解成一份“交给搜索引擎就能全收录”的清单。实际使用中它更像一个发现通道:蜘蛛会读,但不一定逐条按顺序处理,处理节奏也和站点规模、更新频率、其他入口信号有关。理解它被读取的方式,比反复提交要有效得多。
Sitemap 是入口,不是保证
Sitemap 的作用是把 URL 送进“已知”集合。进入已知之后,还要经过抓取、解析、评估,才可能进入索引。所以看到 Sitemap 里的地址长期没被抓取,先别急着重新提交,先确认这些 URL 是否有内链支撑、是否值得占用抓取资源。
索引文件与分片:一次能读多少
规模稍大的站点通常用 sitemap 索引文件(sitemap index)指向多个子 Sitemap。蜘蛛会先读索引,再按需读取子文件。这里有几个容易忽略的点:
- 单个文件里的 URL 数量有上限,超出部分不会被读,必须拆分成多个子文件。
- 索引文件本身也要保持简洁,只列子 Sitemap 地址和最后更新时间,不要混入普通页面链接。
- 子文件按内容类型或栏目拆分,比按时间随便切更容易被分批读取。
- 所有子文件都要能独立返回正常状态码,任何一个 404 或 5xx 都会让这一片暂时失效。
换句话说,蜘蛛不是一次性读完整个索引,而是有选择地抓取子文件。分片方式决定了它先看到哪一批 URL。
lastmod 的可信度
lastmod 是少数能影响复查节奏的字段,但前提是它真实且稳定。如果每次生成 Sitemap 都把全站时间刷成当前时刻,这个字段很快就会被忽略,等于自己放弃了它。更实用的做法是:只有正文、价格、库存这类实质变化才更新 lastmod,模板调整、导航改动不必改动它。
建议的字段写法
- loc 用绝对地址,与页面最终 URL 完全一致,避免跳转。
- lastmod 用 W3C 格式的时间,带时区更稳妥。
- changefreq 和 priority 现在更多是参考值,写不写影响都不大,不必为此纠结。
- 不要放 noindex、重定向或需要登录的地址,它们会稀释这份清单的价值。
常见配置问题
- Sitemap 声明在 robots.txt 里,但地址本身返回 301,蜘蛛要多跳一次才拿到内容。
- Sitemap 里的 URL 和站内实际链接不一致,比如带不带尾斜杠、大小写不同,等于把同一页面报了两遍。
- 分片文件长期不更新,新增内容一直没进索引文件,蜘蛛自然看不到。
- 把 Sitemap 当主要发现手段,内链却几乎为零,结果 URL 被知道但拿不到足够的权重信号。
它和内链、入口页的分工
Sitemap 擅长覆盖广度,尤其是新页面、深层页面和站内链接较少的地址;内链擅长传递层级和重要性,让蜘蛛判断哪些页面更值得优先抓;入口页和栏目页则决定蜘蛛进入站点的第一跳。三者重叠越多,效果越好,但谁也不能完全替代谁。只靠 Sitemap 而不修内链,通常表现为“被发现得快、被复查得慢”。
一个简单的自查顺序
- 先确认 Sitemap 能被正常访问,索引文件与子文件都没有错误状态码。
- 抽查若干 URL,看它们在站内是否至少有两条可抓内链指向。
- 检查 lastmod 是否被无差别刷新。
- 对照抓取日志,看 Sitemap 中的地址是否出现过,出现后是否有复查。
把 Sitemap 当成一份持续维护的清单,而不是一次性的提交动作。它解决的是“有没有被知道”,抓取和索引仍要靠内链、内容质量和服务器稳定性一起支撑。
当 Sitemap 的字段稳定、分片合理、链接与站内一致,它在 URL 发现环节的作用会明显提升;但它始终只是抓取路径上的一环,不是终点。