不少人把 sitemap 当成“提交了就应该收录”的清单,于是把所有能生成的 URL 都塞进去。结果提交了几万条,索引里只进去一小部分,报告里一堆“已发现但未编入索引”。问题往往不在搜索引擎,而在于这份清单本身混进了大量不该出现的 URL。
先明确 sitemap 的定位
sitemap 是帮助搜索引擎发现 URL 的辅助文件,它影响的是“发现”这一步,既不决定抓取频率,也不保证收录。既然是发现清单,判断标准就很简单:这个 URL 如果被蜘蛛发现,我希望它被抓取和索引吗?答案是“不希望”的,就不该放。
适合放进 sitemap 的 URL
- 返回 200 的规范 URL,canonical 指向自身;
- 页面可被抓取,没有被 robots.txt 屏蔽,也没有 noindex;
- 有独立内容价值,不是同一内容的另一个参数版本;
- 站点希望用户能从搜索结果直接到达的页面,比如文章、商品、专题页。
数量不是目标。几十个真正独立的页面,比几万条自动拼出来的 URL 更有参考价值。
常见该拿掉的几类
- 标记了 noindex 的页面。一边告诉搜索引擎别索引,一边又放进 sitemap 请它来抓,两个信号互相打架,最容易让抓取额度消耗在不会进索引的页面上。
- 被 robots.txt 屏蔽的 URL。抓取已经被挡住,sitemap 里却还在列,蜘蛛只会反复碰壁。
- 重定向 URL。301、302 的旧地址应该直接换成跳转目标,而不是继续留在清单里。
- 404、410 等错误页。这些 URL 已经没有内容,留着只会制造无效抓取。
- 筛选、排序、跟踪参数页。sort、color、utm 这类参数可以组合出接近无限的 URL,除非某个参数页确实有独立内容和搜索需求,否则不该逐个提交。
- 重复变体。大小写、末尾斜杠、http 与 https 等同一页面的多种写法,只保留规范的那一个。
- 登录后、后台与测试环境页面。这些页面本就不需要出现在搜索结果里。
分页和聚合页怎么办
分页 URL 是否放进 sitemap 没有统一答案。如果分页是用户和蜘蛛到达深层列表内容的主要路径,可以保留;如果分页页面本身没有独立内容,且内链已经能覆盖,就不必全量提交。列表页、标签页同理,关键看它有没有独立价值,而不是看它能不能被生成出来。
一个可执行的核对顺序
- 先把现有 sitemap 里的 URL 按类型分组:内容页、列表与聚合页、分页、参数页、其他。
- 抽样打开每一类,检查返回状态码、canonical、meta robots 是否一致。
- 对照索引报告,看哪些分组长期停留在“已发现未编入索引”,优先从这些分组里做减法。
- 筛选之后,让 sitemap 只保留规范、可抓取、可索引的 URL,并保持它和站内链接、canonical 的说法一致。
- 之后按内容更新节奏调整 lastmod,不要每次发布都无差别地改全站时间。
把 sitemap 当成“推荐给搜索引擎的页面清单”,而不是“网站所有 URL 的存档”,它的作用才稳定。
最后提醒一句:整理 sitemap 通常不会立刻让收录变多,它做的是减少无效信号,把有限的抓取引导到真正想被索引的页面上。页面最终是否被收录,仍然取决于内容质量和站点整体情况。