Back to articles

大多数我们审核的站点地图未通过验证。我们的站点地图虽然有效,却仍然错误

SEOReport Team·
xml-sitemapstechnical-seoseo-auditindexingcrawlingdata-analysis

49 已审核站点:57% 的站点地图未通过 XML 验证,且通过的站点隐藏了更严重的问题。包括我们自己的有效站点地图失效的那一天。

在 2026 年 5 月 5 日至 8 月 15 日期间,我们验证了每个完成审核的站点的 XML 站点地图——49 个域名,每个域名最新快照。 其中 28 个,即 57.1%,直接未通过验证:XML 格式错误、缺少协议命名空间、破损的 loc 条目,或 lastmod 值爬虫不必遵守。

这使得该站点地图成为我们测量中最破损的发现文件。 同一周我们编制这些数字时,发现整个数据集中最具启发性的站点地图失败发生在我们自己的域名——在一个通过所有验证检查的站点地图内部。

超过一半的站点地图在爬虫读取第一个 URL 之前就已失败

站点地图会在两个深度上失败,而且失败的顺序很能说明问题。 验证——最浅层的测试——失败率最高。 更深层的测试会获取列出的 URL 并检验每个 URL 是否真的应该出现在站点地图中,它们失败的频率较低,但失败时成本更高。

XML 与站点地图协议一致492857.1%
列出的 URL 无软 404461021.7%
列出的 URL 无 noindex 指令21733.3%
列出的 URL 在未重定向的情况下回答19526.3%

方法论:按我们当前检查集的最新完成审计快照,每个域名在 5 月 5 – August 15, 2026,已匿名化。 49 已审计站点;每次检查的分母在 19 与 49 之间变化,因为更深层的测试仅在 sitemap 及其列出的 URL 实际可获取时才适用。 样本是自选的——运行审计的站点所有者——并倾向于中小型。 将这些比率视为方向性。

Share of Evaluated Sites Failing Each Sitemap Check, in Percent

验证在大多数生成器从未测试的细节上失败

sitemap 协议很小,这正是为什么失败它是可避免的。 协议 的要求很少:文档解析为 XML,根元素为 urlset 或 sitemapindex 并声明 sitemap 命名空间,每个条目携带一个非空的 loc,它是同一站点上 sitemap 的绝对 HTTP 或 HTTPS URL,且任何 lastmod 都是有效的 W3C 日期或带时区的 datetime。*

失败集中在最后的 2 规则。 跨站 loc 条目通常意味着一个暂存主机名或一个 CDN 来源泄漏到生产环境。* 而 lastmod 是无声的无效值冠军:生成器喜欢写数据库时间戳如 2026-07-14 19:10:31 — 用空格代替 T,没有时区 — 这不是 W3C datetime。* Google 的 sitemap 文档 说明它在值始终一致且可验证时使用 lastmod;无法解析的格式会在每个条目上放弃该信号。* 截断文件也会失败:被中途截断的 sitemap 并不是更小的 sitemap,而是一个损坏的 sitemap.

这一类的每一次失败都是配置层面的修复,正如我们在 10 个检查中网站最常失败 中发现的那样:错误位于浏览器渲染之下,除非机器查看,否则没人能看到。*

一个有效的 sitemap 仍可能将爬虫引导至死链

更深层的测试将 sitemap 视为一组声明并检验每一个。 一个 sitemap 条目声明:此 URL 存在、可索引且值得爬虫花时间。* 获取列出的 URL 会暴露 3 种矛盾:*

  • Noindexed URLs — 33.3% of evaluated sites. 一个 sitemap 条目说“索引此 URL”;同一 URL 上的 noindex robots 指令说“不要”。 爬虫会在你不想要的方向上解决矛盾,混合信号会降低对文件其余部分的信任。 1 在我们可以抓取站点地图成员的 3 中至少有 1 这些矛盾存在。
  • 重定向 URL — 26.3%。 记录 301 或 302 在其他地方。 站点地图应列出最终 URL;其中的每个重定向都是陈旧声明,并为每次抓取增加一次额外往返。
  • 软 404s — 21.7%。 回答 200 但实际上不存在的页面,例如以成功状态返回的“未找到”消息,或空模板。 每个都会消耗抓取预算,并让爬虫认为你的站点地图夸大了。

这些比率低于验证数字,但当你权衡后果时顺序会翻转。 一个无效的 lastmod 会让你失去调度提示。 一个充满矛盾和软 404s 的站点地图会让你失去整个文件的爬虫信任。

我们自己的站点地图通过验证,同时隐藏了每篇文章

2026 年 8 月 15 日,我们发现 seoreport.dev 的站点地图悄悄省略了我们发布的每篇文章 URL。

原因是我们在 8 月 1 部署的授权强化。 它将 API 的插件路由移至默认拒绝——正确的安全姿态——但允许列表只允许单个内部表面。 公共文章端点开始对匿名调用者回答 401,包括我们自己的站点地图生成器和我们自己的文章页面。 生成器捕获了失败,未记录任何信息,并发出了一个完全有效的站点地图,仅包含静态页面。 文章页面渲染了一个空列表。 每篇已发布的文章在窗口中记录了 0 次浏览量。

没有任何警报,因为一切都保持通过。 站点地图被解析,声明其命名空间,列出了真实的 200 状态 URL,具有良好格式的 lastmod 值。 按照 57.1% 的验证标准,审计站点失败时,我们的站点地图是典范。 它也缺失了存在的全部理由。 失败之所以不可见,正是因为文件保持语法有效——一种回退会悄无声息地降级为合理输出,比崩溃更糟,因为崩溃会在同一天修复。

我们在同一天修复了它,在 4 移动中。 授权边界现在显式允许已发布文章的读取——列表、按 slug、查看计数——方法范围内,而草稿和变更保持默认拒绝。 站点地图生成器和文章获取器现在在错误级别记录公共表面失败,而不是降级。 一个健康检查维度持续探测匿名文章路由,因此这类停机页面会让运维人员而不是等待人工注意到空白页面。 我们在同一天重新提交了完整的 URL 集合 via IndexNow — 这进一步教训:托管在 /.well-known/ 下的 IndexNow 密钥文件只能为该路径下的 URL 做担保,因此将密钥放在站点根目录,或者每一次全站提交都会返回 422。

卫生合同:站点地图是一组关于其中每个 URL 的承诺

验证是基础。 需要保持的标准是每个条目都保持 4 承诺,另外 1 对文件本身的承诺:

1. 活跃:URL 直接返回 200。 没有 3xx、没有 404、没有挑战页面。 仅列出最终 URL. 机械验证:

bash
抓取 -s https://example.com/sitemap.xml \\
| 搜索 -o '<loc>[^<]*</loc>' | sed 's/<[^>]*>//g' \
| xargs -n1 -P4 curl -s -o /dev/null -w '%{http_code} %{url_effective}
' \
| grep -v '^200'

任何输出都是违规。

2. 可索引:无相互矛盾的指令。 没有 ``, no X-Robots-Tag: noindex 头部,也没有 robots.txt 规则阻止该路径。如果一个 URL 不应被索引,修复方法是将其从站点地图中移除,永远不要在其上附加 noindex。<meta name="robots" content="noindex">, no X-Robots-Tag: noindex` 头部,没有 robots.txt 规则阻止该路径。如果 URL 不应被索引,修复方法是将其从站点地图中移除,永不将其与 noindex 附加列出。

3. 正式化:页面正式化为自身。 一个条目,其 rel=canonical 指向其他位置,告诉爬虫索引不同于你提交的 URL。 列出规范的,删除变体。

4. 真实的 lastmod. 仅限 W3C 格式 — 2026-08-24 或 2026-08-24T08:00:00-05:00 — 由 真实 内容变化驱动。 一个在每个条目上打上部署时间的构建流水线在宣布你的 lastmod 一无所知,爬虫学会以这种方式对待它。

5. 完成:文件包含它应该包含的内容,并且有人正在检查。 这就是我们自己的事件所破坏的承诺。 XML 有效性并不涉及组成,因此直接监控组成——断言每个预期的 URL 类都存在,并在某个类崩溃为 0 时发出警报:

bash
count=$(curl -s https://example.com/sitemap.xml | grep -c '/articles/')
[ "$count" -ge 1 ] || echo "ALERT: sitemap lost its article URLs"

站点地图生成器绝不能退化为更小的有效文件。

付费的 SEOReport 诊断 会在每次运行时检验前4个承诺,并显示哪些条目违反了哪些承诺,给出精确的网址。 第五步需要了解你的站点地图应该包含什么,只有你自己知道;将其纳入可重复的流程的系统方法已在如何进行系统化SEO审计中说明。

验证通过的站点地图并不是真正的站点地图。 57.1% 的站点尚未达到底层,底层是一段修复的下午。 天花板——一个每个条目都活跃、可索引、规范、诚实记录、完整的文件——使爬虫将你的站点地图视为真理来源。 我们现在持续检查这两项标准,因为我们在自己的域名上亲身经历了差异,验证器却说一切都没问题。

获取您网站的完整诊断

一份有据可依的报告和优先级行动计划,采用每月积分的订阅方案。