站点运营

站点运营:Sitemap 自查,别让地图里塞满失效地址和过期标记

Sitemap 不是提交一次就完事。它同时承担 URL 发现和状态告知两个作用。如果地图里混入 404、重定向、noindex 页面,或者 lastmod 长期不更新,搜索蜘蛛就会把抓取预算花在无效地址上。这篇文章整理一份可以按季度执行的 sitemap 自查流程,从地址筛选、lastmod、分片到日志观察。

站点运营

站点运营:Sitemap 自查,别让地图里塞满失效地址和过期标记

Sitemap 是站点运营里最容易被“提交一次就忘掉”的配置。刚上线时大家会认真生成,过几个月栏目调整、内容下线、URL 改名之后,地图里可能已经混进不少失效地址。搜索蜘蛛再次读取时,拿到的就是一份过期的 URL 清单。

它不直接决定收录,但会影响蜘蛛发现新地址的效率。下面是一份偏日常维护的 sitemap 自查流程,适合按季度或大改版后执行。

先看地图里有没有“不该出现”的地址

打开 sitemap,随机抽几十条 URL 逐个访问。重点不是看它能不能打开,而是看它返回了什么状态。

  • 404 与 410:已经删除且没有替代页面的地址,应该从 sitemap 移除。继续留着只会让蜘蛛反复来确认。
  • 301 与 302:如果地图里给的是旧地址,蜘蛛会先跳转一次才到目标页。更好的做法是直接在地图里写最终地址。
  • noindex 页面:加了 noindex 的页面不必再放进 sitemap,两个信号互相矛盾。
  • 参数筛选页:排序、筛选、追踪参数生成的 URL,除非确有独立价值,否则不要批量塞进地图。
  • 登录、草稿、预览链接:这些地址本就不该被公开发现,放进 sitemap 等于主动递出去。

lastmod 要真实,别批量刷成同一天

lastmod 是告诉蜘蛛“这个页面最后一次实质性修改是什么时候”。它的价值在于帮助蜘蛛判断哪些地址值得优先重访。

如果每次生成 sitemap 都把全站 lastmod 写成当天,这个字段就会失去区分度。蜘蛛多次看到“所有页面每天都在更新”,慢慢就不会再参考它。比较稳妥的做法是:只更新真正改过正文、标题或主要结构的页面;模板调整、广告位更换、CSS 修改这类不影响内容的改动,不必改 lastmod。

如果程序无法准确输出 lastmod,宁可省略这个字段,也不要写一个不真实的日期。

分片与索引文件自查

内容量大的站点,sitemap 通常会被拆成多个文件,再由一个索引文件统一引用。这里有几个容易忽略的点:

  1. 单个 sitemap 文件建议不超过 5 万条 URL,未压缩体积不超过 50MB。超过后蜘蛛可能只读取一部分。
  2. 索引文件里引用的每个分片地址都要能正常打开,不能返回 404 或 5xx。
  3. 分片命名最好有规律,比如按栏目或按月切分,方便自己排查,也方便在日志里对应。
  4. 如果分片是动态生成的,注意生成时间。列表页查询过慢会导致蜘蛛请求超时,最好加一层缓存。

更新后看抓取日志,而不是只看提交成功

在搜索资源平台提交 sitemap 后,提示“成功”只代表文件被读取,不代表地址会被抓取。更有效的观察方式是看服务器日志:

  • 蜘蛛是否定期来抓 sitemap 文件本身;
  • 读取 sitemap 后,是否在短时间内访问了其中新增的地址;
  • 地图里的 404 地址是否还在被反复请求;
  • 分片文件是否出现 5xx 或超时,导致蜘蛛中途放弃。

如果发现蜘蛛频繁抓 sitemap 却不抓正文,可以回头检查地图里有效地址的比例。无效地址越多,整份地图的“信任度”就越低。

一份可以照着做的自查清单

  • 抽样访问 30 到 50 条 URL,记录状态码与最终地址。
  • 检查 sitemap 中是否包含 noindex、登录页、草稿、预览链接。
  • 核对 lastmod 是否与页面实际改动一致,避免全站同一天。
  • 确认分片数量、大小、索引引用都正常。
  • 在 robots.txt 中正确声明 sitemap 地址。
  • 提交后观察一周抓取日志,看新增地址是否被发现。
  • 大改版、批量下线、栏目合并后,重新生成并复核一次。

把这些检查并入日常运维,比每次出问题再回头翻 sitemap 要省事。地图不需要“全”,但需要“准”。