sitemap 解决的是“发现”,不是“收录”
不少人把 sitemap 当成提交入口:文件一挂,就等着页面进索引。实际上它只做一件事——把 URL 明确地告诉蜘蛛。发现之后,抓不抓、收不收,仍取决于另外几件事:页面能不能正常访问、内容是否有独立价值、和站内其他页面是否高度重复、有没有被 noindex 挡住、站点的整体抓取是否顺畅。sitemap 是把门推开,不是把人拉进来。
哪些 URL 适合放进去
- 希望被索引的正文页、详情页、栏目页,且返回 200、内容可正常渲染
- 靠内链不容易走到、但确有价值的页面,比如层级较深的详情页和早期文章
- 刚上线、需要尽快被发现的页面
- 规范版本 URL,与你选定的 canonical 保持一致
一个简单的判断标准:这个地址,你是否愿意让它出现在搜索结果里。
哪些 URL 不该放
- 被 noindex 的页面:两个信号互相打架,只会浪费抓取
- 301、302 跳转的地址,直接写跳转后的目标页
- 404、410,以及已经下线的短期活动页
- 排序、筛选、会话、追踪参数拼出来的地址
- 需要登录或填表之后才能看到内容的页面
- 站内搜索结果页、几乎没有正文的薄标签页和空白页
数量、分片和格式上的常规做法
- 一个文件别塞太多。URL 数到达几万条量级时,就该考虑拆分,降低单次读取失败的影响面
- 用 sitemap 索引文件把多个子 sitemap 串起来,按栏目或内容类型划分,出问题时容易定位是哪一块
- lastmod 写真实的最后修改时间。如果每次生成都刷成当前时间,这个字段很快就没有参考价值
- 文件可以压缩,但里面的地址要是完整绝对地址,带上协议和主机名
- 在 robots.txt 里声明 sitemap 地址,方便蜘蛛找到入口
- 站点规模不大时,一个文件加一行声明就够了,不必为了显得专业硬拆成十几份
怎么判断 sitemap 有没有起作用
- 在服务器日志里找 sitemap 文件的访问记录,看蜘蛛是否定期来读,以及读的是哪个子文件
- 观察新 URL 在 sitemap 里出现后,几天内是否被访问过,而不是长期没有动静
- 如果 sitemap 被频繁读取,但里面的地址迟迟不被抓取,问题多半出在页面本身或站点整体抓取情况上
- 如果 sitemap 从不被读,先检查 robots.txt 的声明、文件能否正常访问、返回状态是否正确
它和内链的关系
sitemap 是辅助通道,主力仍然是站内链接。内链结构清晰、层级不深的时候,页面的发现节奏通常更稳,也更少依赖一份文件是否被及时读取。两者配合使用,比只靠其中一项更可靠。
把 sitemap 当成一份“愿意被看到的 URL 清单”来维护:定期清理失效、跳转和重复项,比一次性生成几万条然后长期不管,效果要好得多。