站点地图(sitemap)常被当成一种“提交了就等着收录”的工具,实际上它只是把一份 URL 清单交给搜索引擎,等于告诉蜘蛛:这些地址存在,可以来看看。来不来、来几次、看完之后进不进索引,取决于页面本身的状态和站点整体质量。把 sitemap 当成线索而不是承诺,后面的判断会顺很多。
只放“希望被索引”的 URL
判断标准并不复杂:这个地址如果被用户搜到,你愿不愿意它出现在结果里。愿意,再考虑放进去。
- 返回 200 状态码,内容公开可访问,没有登录墙或弹窗遮挡;
- canonical 指向自身,或者它指向的规范版本也在这份清单里;
- 页面有独立价值,不是纯筛选结果、排序参数或追踪链接的变体;
- 移动端与桌面端只保留一套主 URL,另一套用对应关系标注,而不是两套并列提交。
这几类地址放进去只会添乱
清单越长越杂,蜘蛛对其中每个地址的信任度就越低。以下这些属于典型的不该提交项:
- noindex 页面:一边告诉蜘蛛别索引,一边把地址递过去,逻辑上自相矛盾;
- 跳转源地址:301 或 302 的旧 URL 应该提交跳转后的目标,而不是跳转前的入口;
- 已失效页面:404、410 的地址,以及早就下线的活动页、临时专题页;
- 参数变体:带 utm、会话、排序、每页条数参数的 URL,容易被当作重复内容;
- 需要登录的内容:蜘蛛抓到的往往只是登录页或空白页,提交了也没有意义。
一句话原则:sitemap 是候选名单,不是收容所。该放的少而准,比一次写满几万条更有用。
文件本身的结构细节
单个 sitemap 文件建议不超过 5 万条 URL、未压缩体积不超过 50MB,超了就拆成多个,再用 sitemap index 串起来。拆分维度按栏目或内容类型划分,比按时间随机切更利于日后排查,比如某个栏目掉出了索引,你能很快定位到对应的那份清单。
lastmod 要写真实的最后修改时间。如果每次生成都刷新成当前时间,蜘蛛很快会发现这个字段不可信,慢慢就忽略它了。宁可只给确实改动过的页面更新时间,也不要全量刷。
提交之后怎么验证
- 在搜索资源平台的 sitemap 报告里看是否解析成功、读取了多少条;
- 用平台提供的收录查询和索引覆盖报告,对比清单中的 URL 数量与实际被索引的数量,这里看的是趋势,不是单条结果;
- 翻蜘蛛访问日志,把日志里的 URL 与清单做交集,看蜘蛛是否真的按清单在抓;
- 抽查若干地址,手动确认状态码、canonical、robots 元标签是否和预期一致。
几个常见误区
把 sitemap 当收录开关
提交不等于收录。如果页面本身内容单薄、内链稀薄、站点整体可抓取资源有限,清单再完整也不会明显改变结果。它能压缩的是发现成本,压缩不了的是页面质量这道门槛。
只提交首页和栏目页
不少站点只把首页、频道页放进去,深层文章指望蜘蛛自己顺着链接爬。结果是点击深度大的页面长期停留在“已发现未抓取”。把有代表性的内容页也纳入清单,能减少对爬取路径的依赖。
写完从不清理
页面下线、改版、合并之后,旧地址还留在清单里,时间一长就混杂着大量 404 和跳转。定期按状态码筛一遍,比一次性写完放着不管更实用。
总结来说,sitemap 的价值在于降低 URL 发现的成本:它能把地址送到蜘蛛面前,但替页面争取收录这件事,它做不到。让清单保持“少而准”,再配合内链结构、状态码和内容质量一起看,它才算一个稳定的基础工具。