sitemap 是给蜘蛛看的目录,不是许愿池
站点地图(sitemap.xml)的作用其实很朴素:把站内希望被发现的 URL 集中列成一份清单,交给搜索引擎自己去挑。它不保证收录,也不该被当成“提交了就会来抓”的许愿池。真正麻烦的是,很多站点的 sitemap 属于建站时生成一次、之后无人过问的文件,时间一长,它和站点实际状态之间的偏差越滚越大。
三类最常见的偏差
一、清单里混进了不该出现的地址
下面这些地址通常不该出现在 sitemap 里:
- 已经返回 404 或 410 的地址;
- 会 301、302 跳走的旧地址(应该直接写跳转后的最终地址);
- 页面本身已设置 noindex 的地址;
- 带筛选、排序、会话、追踪参数的组合地址;
- 后台、登录、测试环境等不希望被公开访问的路径。
每多一条无效地址,就多占一点抓取资源,也让这份清单的可信度打一次折扣。蜘蛛反复拿到出错的内容,对它的兴趣只会越来越低。
二、lastmod 被当成“顺手改一下”
lastmod 是给蜘蛛判断“这个页面值不值得再跑一趟”的参考。有些站点为了显得勤快,每次生成 sitemap 都把全站页面的 lastmod 刷成当天。后果是:蜘蛛看到每一次都是“新内容”,要么反复白跑,要么干脆不再信任这个字段,退回按自己的节奏来。
更稳妥的做法是让它对应真实的内容变更时间——正文、结构化数据、价格、库存这类实质性改动才更新;仅仅改动页脚年份、广告位或者无关样式,不必刷新。
三、分片与索引文件长期无人核对
大站通常会拆成 sitemap index 加多个子文件,每个子文件有数量和体积上的常见约束(例如单文件不超过 50000 条、未压缩不超过 50MB)。如果由程序自动拆分,要确认每个子文件都能正常打开、返回正确的内容类型,而不是某个子文件早已 404,索引却还在引用它。索引文件里列出的应当是 sitemap 地址,不要误写成普通页面地址。
一份可以照着做的自查清单
- 直接打开 sitemap 地址,确认返回 200、内容类型为 XML,且没有被登录墙或 CDN 规则拦住。
- 在 robots.txt 里用一行 Sitemap 声明完整地址,方便蜘蛛找到入口。
- 抽查清单首尾与中间若干条 URL,逐个访问,看状态码、是否跳转、是否带 noindex。
- 核对 lastmod,确认它跟着真实内容变化,而不是跟着生成脚本走。
- 检查是否有孤立页面不在清单里,尤其是新发布不久、站内链接还没铺开的内容。
- 确认清单中的地址与页面规范地址完全一致,带不带 www、带不带结尾斜杠保持统一。
- 如果用了 sitemap index,逐个子文件点开,确认没有死链与重复。
- 把重新生成排进日常流程,内容有增删后就更新,而不是等想起来再说。
sitemap 只是入口之一,别孤立地看它
站点地图解决的是“告诉你有哪些地址”,但真正影响蜘蛛愿不愿意多来的,还是站点本身:内链能不能从首页顺着点到,页面打开速度如何,内容是不是持续在更新。如果清单里躺着几千条 URL,而站内几乎没有任何链接指向它们,这份文件的实际作用会大打折扣。
把 sitemap 当作一份需要维护的清单,而不是一项提交完就算收工的任务。
另外,服务器日志和搜索资源平台里的抓取数据能反过来说明问题:蜘蛛有没有按清单来、哪些目录被跳过了、哪些地址反复报错。把这些观察结果回流到清单维护上,比单纯盯着“一共提交了多少条”更有意义。
小结
sitemap 自查不需要多复杂的工具,重点就三件事:清单里的地址真实可用、lastmod 反映真实改动、分片与索引文件没有失效。定期花十几分钟过一遍,比事后排查“为什么新页面迟迟不来”要省事得多。