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屏蔽了。提交前在浏览器里打开确认能正常访问。
0 条评论