XML Sitemap 生成与提交:让 Google 高效发现你的页面

新站上线最头疼的问题之一:页面写好了,Google不知道。等了两周Search Console显示0索引。很多时候不是内容质量问题,是Google根本没发现你的URL。Sitemap就是解决这个问题的。它告诉Google你的站点有哪些页面、什么时候更新的、页面之间什么关系。这篇把sitemap的生成、提交和验证一次说清楚。

Sitemap 到底有没有必要

根据Google Search Central官方文档的说法,如果你的站点页面之间链接良好,Google通常能自己发现大部分页面。但以下三种情况建议提交sitemap:

第一,站点规模大。页面多的时候,靠内部链接发现所有URL不现实,容易有漏网之鱼。第二,新站外链少。没有别的站链接到你,Googlebot没有入口发现你的页面。第三,站点有大量富媒体内容(视频、图片)或出现在Google News里。

反过来,500页以下、内部链接完善、没有大量媒体内容的小站,不提交sitemap影响不大。但提交了也没坏处,Search Console还能监控索引状态。

生成 Sitemap 的三种方式

1. 静态生成(适合页面固定的站点)

如果你的页面不多且不常更新,手动生成一个XML文件就行。格式如下:

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>https://www.example.com/</loc>
    <lastmod>2026-10-13</lastmod>
    <changefreq>weekly</changefreq>
    <priority>1.0</priority>
  </url>
  <url>
    <loc>https://www.example.com/about</loc>
    <lastmod>2026-09-01</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>
</urlset>

把文件命名为sitemap.xml放到网站根目录,访问https://www.example.com/sitemap.xml能打开就行。

关于changefreq和priority:Google官方文档明确说这两个标签只是建议,不是命令。Google会参考但不一定遵从。设了changefreq>daily不代表Google每天来抓。真正影响抓取频率的是页面实际更新频率和外链数量。

2. CMS自动生成

WordPress用户装个Yoast SEO或Rank Math插件,设置里开启XML sitemap功能,自动生成且每次发文章自动更新。Shopify、Wix等平台也内置了sitemap生成功能,通常在域名后面加/sitemap.xml就能访问。

检查方法:在浏览器打开https://你的域名/sitemap.xml,如果看到XML格式的URL列表就说明已经有了。

3. 代码动态生成(适合自定义站点)

页面数量多、内容更新频繁的站点,建议用代码动态生成。下面是Node.js示例:

const generateSitemap = (urls) => {
  const xmlUrls = urls
    .map(u => `  <url>
    <loc>${u.loc}</loc>
    <lastmod>${u.lastmod}</lastmod>
  </url>`)
    .join("\n");

  return `<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
${xmlUrls}
</urlset>`;
};

部署到Cloudflare Workers的话,可以用KV存储URL列表,请求时动态生成XML返回。好处是发新内容后不需要手动更新sitemap文件。

提交 Sitemap 到 Google

有两种提交方式,推荐两个都做。

方式一:通过 Search Console 提交

打开Google Search Console,左侧菜单找到”Sitemaps”。在输入框填入sitemap.xml(如果文件在根目录的话),点提交。

提交后Search Console会显示状态:成功、有错误、还是还在处理。如果报错会告诉你具体问题,比如URL格式不对、文件无法访问等。根据官方文档建议,提交后可以监控这个报告确认Google成功读取了你的sitemap。

方式二:在 robots.txt 里声明

在robots.txt文件里加一行:

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

这样所有搜索引擎爬虫都能发现你的sitemap,不限于Google。Bing、DuckDuckGo等也会读这个声明。

大型站点的 Sitemap 拆分

单个sitemap文件最多50000个URL且不能超过50MB(未压缩)。超过这个限制需要拆分成多个sitemap文件,然后用一个sitemap index文件汇总:

<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <sitemap>
    <loc>https://www.example.com/sitemap-1.xml</loc>
    <lastmod>2026-10-13</lastmod>
  </sitemap>
  <sitemap>
    <loc>https://www.example.com/sitemap-2.xml</loc>
    <lastmod>2026-10-13</lastmod>
  </sitemap>
</sitemapindex>

然后在Search Console提交这个index文件就行。WordPress的Yoast SEO插件会自动处理拆分,不用手动管。

Sitemap 提交后该看到什么

提交sitemap不等于页面一定会被索引。Google发现URL后会先抓取,然后判断内容质量,再决定是否索引。根据Search Console的帮助文档,提交sitemap只是加速发现,不保证索引。

提交后3到7天,去Search Console的”页面索引”报告查看。如果显示”已编入索引”的URL数量在增长,说明正常。如果发现URL数量是0或者远低于sitemap里的URL总数,可能有问题:

检查sitemap里的URL是否能正常访问(返回200状态码)。用Search Console的URL检查工具逐个测试重要页面,看是否有抓取错误。确认sitemap里的URL是规范URL,跟canonical标签一致。如果不一致,Google可能选择canonical指向的URL而忽略sitemap里的URL。

Sitemap 的常见错误

第一,把noindex的页面放进sitemap。如果页面设了noindex标签,放sitemap里是矛盾的。Google会困惑:你让我发现这个页面,但又不让我索引。检查sitemap时把所有noindex页面排除掉。

第二,URL包含追踪参数。?utm_source=twitter这种URL不应该出现在sitemap里。它们跟规范URL内容相同但URL不同,会造成重复内容问题。只放干净的规范URL。

第三,把重定向URL放进sitemap。如果/old-page已经301重定向到/new-page,sitemap里应该放/new-page而不是/old-page。放重定向URL浪费Googlebot的抓取预算。

第四,忘记更新lastmod。虽然Google说lastmod是建议性的,但如果你的lastmod日期跟实际最后修改时间差很远,Google可能会降低对这个字段的信任。动态生成sitemap时用实际的文件修改时间或数据库更新时间。

第五,sitemap本身返回错误。sitemap.xml返回404、500或者被robots.txt屏蔽了。提交前在浏览器里打开确认能正常访问。

分类: seo

0 条评论

发表回复

Avatar placeholder

您的邮箱地址不会被公开。 必填项已用 * 标注