网站收录

sitemap 里写了也没用:几类不会带来发现的 URL

sitemap 只负责把 URL 摆到蜘蛛面前,抓不抓、收不收由页面自身状态决定。被 robots.txt 挡住、自带 noindex、跳转或报错、canonical 指向别处、参数变体重复提交,这几类地址写进 sitemap 基本没有效果。本文说清原因、排查顺序和自查方法。

网站收录

sitemap 里写了也没用:几类不会带来发现的 URL

很多人把 sitemap 当成“提交即收录”的开关:文件放到根目录、在后台点一下提交,然后每天看收录数有没有涨。实际情况是,sitemap 只做一件事——把一批 URL 摆到搜索引擎面前,让它知道“这些地址存在”。至于要不要抓、抓了算不算数,取决于这些 URL 自身的状态。下面这几类地址,写进 sitemap 基本等于白写。

一、先明确 sitemap 的作用边界

sitemap 提供的是发现线索,不是抓取指令,也不是收录保证。它能帮新页面、内链稀少的孤立页面更快进入待抓队列,但它覆盖不了 robots.txt 的规则,也推翻不了页面上的 noindex。当一份 sitemap 里大部分 URL 都被别的规则否掉时,蜘蛛对这份文件的信任度会下降,后续新加的地址可能被一起忽略。

二、写了也不会被处理的几类 URL

1. 被 robots.txt 禁抓的目录

最常见的一类。为了省资源,把 /search/ 或 /tag/ 整段 Disallow,同时又把这些地址放进了 sitemap。蜘蛛读到地址后去请求,被 robots.txt 拦住,只能放弃这一次。如果页面本身没有索引需求,就从 sitemap 里删掉;如果希望被收录,要先把对应的 Disallow 解开,而不是反复提交。

2. 页面自带 noindex 的

有些站点在测试环境或某些模板页面上留了 noindex,上线时忘了摘;也有人以为“先 noindex 再放进 sitemap,蜘蛛抓一次就能看到内容”。noindex 的含义就是不要收录,和 sitemap 的目标正好相反。这类 URL 出现在 sitemap 里,除了浪费一次抓取额度和一条记录,没有别的效果。

3. 会跳转或直接报错的地址

已经 301 到别处的旧地址、返回 404 或 410 的失效地址、跳转链超过两三跳的地址,都不适合放在 sitemap 里。sitemap 应该只列最终可访问的规范地址。跳转本身不是问题,问题在于把跳转的起点当成终点提交,蜘蛛每次都得多绕一圈,还可能拿到不一致的信号。

4. canonical 指向别处的页面

页面 A 的 canonical 写着页面 B,而 sitemap 里同时列了 A 和 B。这时 A 的信号会被合并到 B,A 自己不太可能单独保留一条索引记录。把 A 继续留在 sitemap 里,只会让“到底该提交哪些地址”这件事变得更模糊。

5. 参数变体和重复地址

?sort=、?page=、?utm_source= 这类变体如果全部机械地写进 sitemap,等于把同一批内容重复提交很多次。结果是抓取被摊薄,真正的新页面排得更靠后。通常只保留基础地址,以及确实有独立内容的分页地址即可。

三、格式和写法上的坑

  • 地址要写完整,包含协议和域名,相对路径不会被正确解析。
  • 大小写、尾斜杠要和线上实际地址一致,否则会平白多出一次跳转。
  • 中文或特殊字符的地址需要转义,直接贴原始字符容易解析失败。
  • 文件本身要能正常访问,返回 200 且为 XML 内容类型;被防火墙或登录墙挡住就无效。
  • 单文件有数量和体积上限,超出部分要拆成多个 sitemap,再用索引文件串起来。
  • lastmod 写得不准确,比如每次生成都刷成当前时间,会削弱这个字段的可信度。

四、提交之后怎么自查

  1. 在服务器日志里筛出蜘蛛对 sitemap 文件的请求,看它是否定期来取、是否取到了完整内容。
  2. 抽一批文件里的地址,逐个确认状态码、canonical、meta robots 是否一致。
  3. 把 sitemap 地址和站点实际可访问页面做一次对账,找出只存在于一边的地址。
  4. 把长期没有被访问的老地址清出去,让文件保持精简,重点放在真正需要的页面上。
把 sitemap 当成“待办清单”而不是“收录清单”,很多困惑会简单很多:它只负责让蜘蛛知道地址存在,剩下的由页面自己的状态决定。

五、小结

sitemap 的价值在于减少“这个页面没人知道”的情况,它解决不了“页面不想被收录”或者“页面本身有问题”的情况。定期清理无效行、保持提交地址与线上一致,比反复提交同一份文件更有意义。