站点地图(sitemap.xml)是一份给搜索引擎看的 URL 清单,作用是帮助蜘蛛发现地址、感知更新。它不承诺收录,也不影响排名,但一份维护得当的站点地图,确实能减少新页面长期“没人来抓”的情况。
它解决的是发现问题,不是收录问题
蜘蛛的发现路径主要有三条:外链、站内链接、站点地图。前两条靠页面之间的连接关系,第三条是主动申报。对结构较深、内链较弱的页面来说,站点地图往往是它们被发现的唯一机会。反过来说,一个已经能从首页两三跳到达的页面,进不进站点地图差别不大。
所以判断标准很简单:这份清单里的地址,是不是都值得被抓取和索引。答案是否,就不该堆进去。
单文件的容量上限与拆分
常见的硬性限制有两条:
- 单个 sitemap 文件不超过 5 万条 URL;
- 未压缩体积不超过 50MB(gzip 压缩后同样有 50MB 限制)。
超过之后必须拆成多个文件,再用一个索引文件把它们串起来。与其等到超限才拆,不如按栏目、按内容类型提前拆,比如文章、商品、专题、标签页各一个文件。这样某类内容出问题时,影响范围更小,也方便单独排查。
索引文件(sitemap index)怎么写
索引文件本身不列具体 URL,只列子地图的位置和各自的 lastmod。它同样受 5 万条上限约束,实际上一万个子地图就远超正常站点的规模了。写法上,子地图地址建议用绝对地址,并且和实际可访问的路径保持一致——如果子地图本身返回 404 或跳转,索引里的其余条目也会受影响。
lastmod 写还是不写
很多人习惯让 lastmod 跟着页面渲染时间自动变化,每次抓取都显示“刚刚更新”。这种做法短期看不出问题,长期会稀释这个字段的可信度。lastmod 应当对应内容的实质性改动,比如正文补充、数据更新、价格调整,而不是页脚版权年份变化或模板微调。
- 内容确实改了,就更新;
- 只改了样式或无关模块,不要动;
- 批量重建导致全站时间统一刷新,等于没写。
如果 lastmod 长期不可信,蜘蛛会逐渐忽略这个字段,你反而失去了提示更新的手段。
哪些地址不该出现在站点地图里
- 被 noindex 标记的页面:清单和指令自相矛盾,浪费抓取;
- 会跳转的地址:应该放跳转后的最终地址;
- 已删除的页面:返回 404/410 的地址继续留在清单里没有意义;
- 排序、筛选、跟踪参数生成的重复地址;
- 需要登录的后台、测试环境、内网地址;
- 分页过深的列表页,视情况只保留前几页。
提交之后该看什么
在站长平台提交站点地图后,别只看“已提交”就完事。更值得关注的是“已发现”和“已编入”之间的差额:大量地址被发现却长期没被访问,通常说明抓取配额被别处占用了,或者站点整体响应偏慢。反过来,如果清单里的地址压根没被读到,先检查文件本身能否正常访问、格式是否被解析。
一份简单的自查清单
- 清单位置是否写在 robots.txt 里,且 robots.txt 没有挡住它;
- 文件本身可访问,返回 200,Content-Type 正确;
- URL 数量、体积都在上限内,超过已拆分;
- 清单里没有 noindex、跳转、失效地址;
- lastmod 与实际内容改动对应;
- 新内容上线后,观察它被发现的间隔是否在可接受范围内。
把站点地图当成一份需要定期维护的清单,而不是一次性生成的产物,它才能真正在 URL 发现这一环上发挥作用。