sitemap 里有但 Search Console 不显示

2026 最新:sitemap.xml 已提交、URL 都在里面,但 Search Console Pages 报告完全没有——常见原因。

sitemap.xml 返回 200,里面列了 800 个 URL,Search Console → Sitemaps 显示 “Success”——但 Pages 报告里只看到 50 个 URL,剩下 750 不见踪影。

Sitemap “Success” 只代表 Google 能读懂这个 XML 文件,不代表它接受了里面所有 URL。下面是常见原因和验证方法。

症状

  • sitemap.xml 返回 200 且列出了 URL
  • Search Console sitemap 状态 “Success”
  • Pages 报告显示 0 个 discovered URL,或只显示一小部分
  • “已发现 URL”数远低于 sitemap 实际 URL 数

快速结论

要么 sitemap 有 Google 默认容忍的格式问题,要么 URL 与 Google 自己挑的 canonical 不一致,要么 sitemap 上传到了另一个 property。

常见原因

1. Sitemap 用 http 但站点是 https(或反过来)

<url><loc>http://yourdomain.com/page/</loc></url>

但你站实际是 https。Google 严格按字面匹配,会忽略不匹配的 URL。

如何判断

curl -s https://yourdomain.com/sitemap.xml | grep "<loc>" | head -5
# 所有 URL 必须是 https://

2. Sitemap URL 有尾斜杠 / 没尾斜杠不一致

<url><loc>https://yourdomain.com/article</loc></url>

但你的 canonical 是 https://yourdomain.com/article/(带斜杠)。Google 把这两个视为不同 URL,sitemap 里那个被忽略。

如何判断:抽 5 个 sitemap URL,对比页面 head 里的 canonical:

for url in $(curl -s https://yourdomain.com/sitemap.xml | grep -oE 'https://[^<]+' | head -5); do
  canonical=$(curl -sL "$url" | grep -oE '<link rel="canonical" href="[^"]+"')
  echo "sitemap: $url"
  echo "canonical: $canonical"
  echo "---"
done

应该完全一致(含 trailing slash)。

3. Sitemap 所在子域或路径与 GSC property 不同

你的 Search Console 验证的是 https://yourdomain.com/,但 sitemap 在 https://www.yourdomain.com/sitemap.xml——是两个不同的 property。

如何判断:Search Console → 设置 → 验证状态。看 property 类型是 Domain 还是 URL prefix,以及具体覆盖范围。

4. Sitemap 里 URL 返回 404 或重定向

Sitemap 里写了 URL,但抓取后是 404 / 301 → Google 不接受。

如何判断

for url in $(curl -s https://yourdomain.com/sitemap.xml | grep -oE 'https://[^<]+' | head -20); do
  status=$(curl -sI -o /dev/null -w "%{http_code}" "$url")
  echo "$status $url"
done

期望全部 200。301 / 404 都要修。

5. XML 不规范,Google 默默截断

Sitemap 必须严格符合 protocol:

  • <?xml version="1.0" encoding="UTF-8"?> 必须在第一行(前面不能有 BOM 或空格)
  • <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> 必须有这个 namespace
  • 单个 sitemap 最多 50,000 URL 或 50MB(未压缩)

如何判断:用 XML Sitemaps Validator 校验。

6. Sitemap 文件太大

如果你 sitemap 是 100MB 或 100,000 URL,Google 解析时会截断,只读前一部分。

修法:拆成 sitemap-index + 多个子 sitemap。

7. sitemap-index 引用错路径

<sitemapindex>
  <sitemap><loc>./sitemap-1.xml</loc></sitemap>  <!-- 相对路径,Google 拒收 -->
</sitemapindex>

必须绝对 URL。

最短修复路径

Step 1:浏览器直接打开 sitemap.xml + validator 校验

浏览器打开:https://yourdomain.com/sitemap.xml
应该看到结构化 XML,无错误提示

XML 校验:https://www.xml-sitemaps.com/validate-xml-sitemap.html

如果 XML 格式错,修了再往下。

Step 2:抽样 5 个 URL 验证 canonical 一致性

用 Step 1 的 canonical 对比脚本。任何不一致的修复:

  • 协议(http vs https)
  • 尾斜杠
  • 大小写
  • www. vs 裸域

修法 = 统一源头:让 sitemap 生成函数和 canonical 渲染函数共用同一个 urlFor()

Step 3:确认 sitemap 提交到正确的 GSC property

Search Console → 设置 → 验证类型:

  • Domain property (yourdomain.com):覆盖所有子域、协议、路径
  • URL prefix property (https://yourdomain.com/):只覆盖该 prefix

如果 sitemap 在 www.yourdomain.com 但 property 是 https://yourdomain.com/(无 www),换 Domain property,或在 www 重新建一个 URL prefix property。

Step 4:所有 URL 都可达 200

用 Step 4 的 curl 脚本批量检查。任何 301 / 404:

  • 301:直接在 sitemap 里写最终 URL
  • 404:从 sitemap 删除

Step 5:拆大 sitemap

<!-- sitemap-index.xml -->
<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <sitemap><loc>https://yourdomain.com/sitemap-articles.xml</loc></sitemap>
  <sitemap><loc>https://yourdomain.com/sitemap-pages.xml</loc></sitemap>
</sitemapindex>

每个子 sitemap < 50,000 URL / 50MB。

Step 6:修复后重交

Search Console → Sitemaps → 删除旧 sitemap → 重新输入 URL 提交。等 7-14 天看 “已发现 URL” 数字。

哪些情况可能不是你操作错了

GSC sitemap 统计有时要 7-14 天才准确。刚提交不要急着排查。

容易误判的情况

  • Sitemap 状态 “Success” = 全部 URL 入队:不是,只代表能解析
  • 以为 sitemap “已发现 URL” 数字 = Indexed 数字:完全不同。前者是 sitemap 内 URL 数,后者是真正进索引的
  • 以为 sitemap 提交后立刻有效:通常需要 24-72 小时

预防建议

  • Sitemap 与 canonical 用同一数据源生成(共享 urlFor() helper)
  • CI 里校验 sitemap XML:格式、URL 数量、每个 URL 200
  • URL 形式(协议 / www / 尾斜杠)与 canonical 完全一致
  • 单 sitemap > 5000 URL 就拆成 sitemap-index
  • 部署后 curl sitemap.xml 一次确认 200 + URL 数对

FAQ

Q:单 sitemap 能放多少 URL? A:5 万条或未压缩 50 MB;更多用 sitemap index。

Q:要为每种语言单独提交 sitemap 吗? A:都可以;分语言更容易调试和单独监控。

Q:lastmod 必须填吗? A:不必填但强烈推荐。填了 Google 知道哪些 URL 最近改过,优先重抓。

相关阅读

标签: #SEO #Google #Search Console #收录 #排查 #Sitemap