Sitemap 是站点主动递给搜索引擎的一张地图。它不保证收录,但能减少蜘蛛猜路的成本。问题在于,很多站点把 Sitemap 提交一次之后就再也没看过,等到发现某类页面长期没有动静,才回头检查,往往已经积累了成百上千条无效地址。
先确认这张地图有没有被读
自查的第一步不是看内容,而是看通道。检查 robots.txt 里是否写了 Sitemap 地址,地址是否与实际文件路径完全一致,文件本身是否返回 200 而不是 404 或 403。如果站点有防火墙、登录校验或地域限制,还要确认抓取请求不会被拦在半路。
接着在搜索资源平台的提交入口确认已提交,再回到服务器日志里搜 Sitemap 文件的请求记录,看抓取频次和状态码。只有提交记录、没有抓取记录,通常意味着通道有问题,而不是内容有问题。
地图里该放什么
核心原则只有一条:只放你希望被索引、且技术上允许被索引的规范地址。
- 返回 200 的 HTML 页面,正文可被抓取
- canonical 指向自身,或明确指向这个地址
- 没有被 meta robots 或响应头标记为 noindex
- 不需要登录、不依赖表单提交就能打开
反过来,下面这些地址不应该出现在 Sitemap 里:301 或 302 跳转页、404 与 410、被 noindex 的页面、纯参数筛选与排序页、内容重复的镜像页、还有那些只在站内搜索里才存在的临时结果页。把它们写进去,等于请蜘蛛来一趟再让它原路返回。
lastmod 要诚实
lastmod 是 Sitemap 里少数仍可能被参考的字段,前提是它可信。如果每次生成都把全站刷成当天日期,等于告诉搜索引擎整站每天都在变,时间一长这个字段就失去参考意义。建议由发布系统在内容真正改动时更新,格式统一用 W3C 日期时间写法。
分片与规模
单个 Sitemap 文件建议不超过 5 万条 URL,未压缩体积控制在 50MB 以内。超出就拆成多个文件,再用 Sitemap index 串起来。分片按栏目或内容类型切分,比按时间胡乱切割更容易定位问题——某个分片出错时,你一眼就知道影响的是哪一块。
几个常见误区
- 只放首页和栏目页,内容页全靠内链碰运气
- 维护一份静态文件,新内容上线后忘了同步
- 大小写、带不带 www、http 与 https 混着写
- 把带跟踪参数、会话 ID 的地址写进地图
- 中文 URL 未做转义,导致解析失败
- robots.txt 挡住了 Sitemap 文件自身
把它变成固定动作
- 新栏目上线或批量改 URL 之后,立刻跑一次格式与可访问性校验
- 抽样 10 到 20 条,逐条确认状态码、canonical 和 noindex 标记
- 拿日志与地图对照,看地图里的地址是否真的被请求过
- 在资源平台对比已提交与已索引的差值,差值集中的部分单独归类排查
- 把 Sitemap 生成写进发布流程,而不是靠人工导出
Sitemap 不是收录开关,它只是把门牌号写清楚。门开不开、蜘蛛进不进,最终还是取决于页面本身值不值得抓。
定期花十几分钟做这几项检查,比事后追着问为什么某类页面没动静要省力得多。