技术 SEO · 第 3 篇

Sitemap 网站地图:格式、生成、提交与多语言配置

约 15 分钟阅读 更新于 2026-06-24 MagicSEO 编辑部 · 人工审核 技术地基

如果说 robots.txt 告诉搜索引擎"哪里不要去",那么 sitemap 就是告诉它"这里有什么值得看"。XML Sitemap 是一份你主动提交给搜索引擎的页面清单,帮助它更快、更完整地发现你网站上的重要内容。这篇文章从格式标准讲到生成、提交和多语言配置,帮你把 sitemap 这块做对、做全。

什么是 sitemap#

Sitemap(网站地图)是一个列出网站上重要页面的文件,用来告诉搜索引擎哪些 URL 可供抓取。最常见的形式是 XML Sitemap,它遵循 sitemaps.org 协议,被所有主流搜索引擎支持。

需要区分两个容易混淆的概念:

类型面向对象作用
XML Sitemap搜索引擎机器可读的 URL 清单,帮助抓取与收录
HTML 网站地图用户页面上给访客浏览全站结构的导航页

本文聚焦的是 XML Sitemap,它是技术 SEO 的标准配置。

核心定位sitemap 是一个发现信号,不是收录保证。它帮助搜索引擎找到 URL,但页面能否被收录仍然取决于可访问性、可索引性和内容质量

为什么需要 sitemap#

搜索引擎主要通过链接发现页面。如果你的内部链接结构清晰,理论上爬虫能顺着链接找到所有页面。但 sitemap 在以下场景中价值明显:

  • 大型网站:页面数量庞大,光靠爬虫顺链接发现效率低,容易遗漏深层页面。
  • 新网站:外部链接少,爬虫缺少发现入口,sitemap 能加速首次收录。
  • 内链稀疏的页面:那些没有足够内部链接指向的"孤岛"页面,sitemap 是它们被发现的重要途径。
  • 内容频繁更新:通过 lastmod 告诉搜索引擎哪些页面有更新,引导优先重新抓取。
  • 富媒体内容:图片、视频等可以通过专门的 sitemap 扩展提供额外信息。

XML Sitemap 标准格式#

一个标准的 XML Sitemap 以 <urlset> 为根元素,每个 URL 用一个 <url> 条目表示:

sitemap.xml
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>https://example.com/</loc>
    <lastmod>2026-06-24</lastmod>
  </url>
  <url>
    <loc>https://example.com/about.html</loc>
    <lastmod>2026-06-20</lastmod>
  </url>
</urlset>

标签说明

标签必需说明
<loc>页面的完整绝对 URL,必须经过 XML 转义(如 & 写成 &amp;
<lastmod>最后修改时间,W3C 日期格式(如 2026-06-24)。准确维护时 Google 会参考
<changefreq>更新频率提示。Google 已忽略
<priority>相对优先级(0.0–1.0)。Google 已忽略
别在 changefreq 和 priority 上浪费时间Google 早已明确忽略这两个标签——它根据真实抓取数据自行判断页面更新频率和重要性。现代 sitemap 只需保留 loc准确的 lastmod。如果 lastmod 不准确(比如每次构建都改成当天),Google 会逐渐不再信任它。

大小限制与 sitemap 索引#

单个 sitemap 文件有两条硬性限制:

  • 最多 50,000 个 URL
  • 未压缩时文件大小不超过 50MB

超出限制时,需要拆分成多个 sitemap,再用一个 sitemap 索引文件(sitemap index)统一组织。索引文件以 <sitemapindex> 为根元素:

sitemap-index.xml
<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <sitemap>
    <loc>https://example.com/sitemap-articles.xml</loc>
    <lastmod>2026-06-24</lastmod>
  </sitemap>
  <sitemap>
    <loc>https://example.com/sitemap-products.xml</loc>
    <lastmod>2026-06-22</lastmod>
  </sitemap>
</sitemapindex>

即使没有超出限制,按内容类型拆分(文章、产品、分类等)也是好做法:它让 Search Console 的覆盖率报告能按类型查看收录情况,更容易定位问题。一个 sitemap 索引文件本身最多可引用 50,000 个 sitemap。

压缩节省带宽sitemap 文件可以用 gzip 压缩(sitemap.xml.gz)。50MB 的限制针对的是解压后的大小,所以压缩主要节省传输带宽。大型 sitemap 推荐压缩。

扩展类型:图片、视频、新闻#

标准 sitemap 之外,针对特定内容类型还有专门的扩展命名空间,可以提供额外的元数据。

扩展命名空间用途适用场景
图片 sitemap声明页面中的图片信息图片是重要内容的站点(图库、电商)
视频 sitemap提供视频时长、缩略图、标题等有视频内容、想进视频搜索结果
新闻 sitemap提供发布时间、标题等新闻元数据已加入 Google News 的新闻站点

以图片 sitemap 为例,在 <url> 条目中嵌入图片信息:

图片 sitemap 片段
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
        xmlns:image="http://www.google.com/schemas/sitemap-image/1.1">
  <url>
    <loc>https://example.com/gallery.html</loc>
    <image:image>
      <image:loc>https://example.com/photo-1.webp</image:loc>
    </image:image>
  </url>
</urlset>

多语言 sitemap 与 hreflang#

多语言网站可以直接在 sitemap 中声明每个页面的语言版本对应关系,这是配置 hreflang 的三种方式之一(另两种是 HTML <link> 标签和 HTTP 响应头)。在 sitemap 中配置的好处是集中管理、便于批量维护。

做法是用 xhtml:link 元素,为每个 URL 列出它所有的语言版本(包括自身):

多语言 sitemap 片段
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
        xmlns:xhtml="http://www.w3.org/1999/xhtml">
  <url>
    <loc>https://example.com/zh/about.html</loc>
    <xhtml:link rel="alternate" hreflang="zh"
                href="https://example.com/zh/about.html"/>
    <xhtml:link rel="alternate" hreflang="en"
                href="https://example.com/en/about.html"/>
    <xhtml:link rel="alternate" hreflang="x-default"
                href="https://example.com/en/about.html"/>
  </url>
</urlset>
hreflang 必须双向对应如果中文页声明了英文版本,英文页也必须声明回中文版本,且每组互相引用的页面都要包含彼此和自身。任何一方缺失,hreflang 关系都会失效。hreflang 的完整配置会在「国际化 hreflang」一篇中专门展开。

注:本站当前只有中文版本,但目录结构(/articles/zh/...)已为多语言预留,未来加入其他语言时可直接在 sitemap 中补充 hreflang 关系。

如何生成 sitemap#

根据网站规模和技术栈,生成 sitemap 有几种主流方式:

方式适用场景说明
CMS 插件WordPress 等Yoast SEO、Rank Math 等自动生成并维护
框架内置Next.js、Astro、Hugo 等构建时自动生成,与页面同步
在线工具小型静态站抓取站点生成,一次性或定期手动更新
构建脚本自定义静态站遍历页面文件,自动产出 XML

对像 MagicSEO 这样的纯静态站,最可靠的做法是写一个构建脚本:遍历文章目录,读取每个页面的路径和文件修改时间,自动输出 sitemap.xml。这样新增文章时 sitemap 会自动更新,不会遗漏,lastmod 也始终准确。

只放该收录的 URLsitemap 里只应包含返回 200、允许索引、规范(canonical 指向自身)的 URL。不要放 noindex 页面、被 robots.txt 屏蔽的页面、重定向 URL 或 404 页面——这些会降低 Google 对你 sitemap 的信任度,也会在 Search Console 里产生"已提交但被排除"的告警。

如何提交 sitemap#

生成 sitemap 后,需要让搜索引擎知道它的存在。有两种主要方式,建议两者都做:

1. 在 robots.txt 中声明

在 robots.txt 中加一行 Sitemap 指令,所有支持的爬虫都会自动发现:

robots.txt
User-agent: *
Disallow:

Sitemap: https://example.com/sitemap.xml

2. 在 Google Search Console 提交

  1. 登录 Google Search Console,选择你的资源(站点)。
  2. 在左侧菜单点击"站点地图"(Sitemaps)
  3. 在"添加新的站点地图"输入框中填入 sitemap 路径(如 sitemap.xml),点击提交。
  4. 提交后等待 Google 处理,状态会显示"成功"以及已发现的 URL 数量。

Bing Webmaster Tools 的提交流程类似。提交后不需要反复重新提交——只要 sitemap 内容更新,搜索引擎会按自己的节奏重新抓取这个文件。

更多细节参见 Google 官方文档:构建并提交站点地图

在 Search Console 监控#

提交后,Search Console 的"站点地图"报告和"网页"(索引)报告能帮你监控 sitemap 的健康状况:

  • 读取状态:确认 sitemap 能被成功读取,没有解析错误或无法访问。
  • 已发现 URL 数:与你预期的页面数量对比,差距过大说明可能有遗漏或格式问题。
  • 覆盖率:在"网页"报告中按"由站点地图提交"过滤,查看其中有多少已收录、多少被排除及排除原因。

重点关注"已提交但未收录"的页面——这通常指向内容质量、重复或规范问题,而不是 sitemap 本身的问题。

常见错误#

错误后果修正
放入 noindex / 被屏蔽的 URL"已提交但被排除"告警,降低信任度只放可收录的规范 URL
使用相对 URLsitemap 无效或解析失败<loc> 必须是完整绝对 URL
URL 未做 XML 转义解析错误(尤其含 & 的参数 URL)& 写成 &amp;
lastmod 造假(每次都改)Google 不再信任 lastmod仅在内容真正变化时更新
混入非规范版本规范信号冲突每个内容只放 canonical 版本
新增页面忘记更新 sitemap新页面发现延迟用脚本/插件自动生成

本站的 sitemap 策略#

MagicSEO 是纯静态内容站,页面规模在数百以内,远低于 50,000 的上限,因此采用单文件 sitemap 即可:

magic-seo.com/sitemap.xml(节选)
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>https://magic-seo.com/</loc>
  </url>
  <url>
    <loc>https://magic-seo.com/articles/zh/technical-seo/sitemap.html</loc>
    <lastmod>2026-06-24</lastmod>
  </url>
</urlset>
本站示范本站 sitemap 由构建脚本遍历 articles/ 目录自动生成:只收录返回 200 的最终页面,lastmod 取自文件实际修改时间,URL 全部为绝对路径且与 canonical 一致。sitemap 地址同时写入 robots.txt 并在 Search Console 提交。目录结构已按语言分层(/zh/),未来扩展多语言时可无缝加入 hreflang。

配置清单#

  • sitemap.xml 可通过绝对 URL 访问,返回 200
  • 只包含可收录的规范 URL(200、允许索引、canonical 指向自身)
  • 所有 loc 为完整绝对 URL,并做 XML 转义
  • lastmod 真实反映内容修改时间
  • 单文件不超过 50,000 URL / 50MB,否则用 sitemap 索引
  • 不包含 changefreq / priority(Google 已忽略)
  • robots.txt 中声明 Sitemap 地址
  • 已在 Google Search Console 提交
  • 多语言站点配置了 hreflang 且双向对应
  • 新增页面时 sitemap 自动更新

常见问题#

小网站也需要 sitemap 吗?

如果你的网站只有几十个页面、内部链接结构清晰,Google 通常能自己发现所有页面,sitemap 的作用有限。但提交 sitemap 没有坏处:它能加快新页面的发现、帮助 Google 了解页面的更新时间,还能在 Search Console 中提供收录覆盖率报告。对绝大多数网站,提供一个 sitemap 都是推荐做法。

sitemap 里的页面一定会被收录吗?

不一定。sitemap 只是帮助搜索引擎发现 URL,它是一个发现信号,不是收录保证。页面能否被收录仍然取决于可访问性、是否允许索引、内容质量和规范信号。把 URL 放进 sitemap 不能让一个低质量或被 noindex 的页面被收录。

一个 sitemap 文件最多能放多少 URL?

单个 sitemap 文件最多包含 50,000 个 URL,且未压缩时文件大小不超过 50MB。如果超出这个限制,需要拆分成多个 sitemap 文件,再用一个 sitemap 索引文件(sitemap index)把它们组织起来。

changefreq 和 priority 标签还有用吗?

Google 已经明确表示忽略 changefreq 和 priority 标签,它会根据实际抓取数据自行判断页面的更新频率和重要性。lastmod 标签如果准确维护,Google 仍会参考。因此现代 sitemap 通常只需要保留 loc 和准确的 lastmod,不必纠结 changefreq 和 priority。