极简工具箱

免费在线工具 · 本地计算 · 无需上传

sitemap.xml 怎么生成:格式、限制与提交

站点有几百个页面,爬虫却只收录了十几个。sitemap 是最直接的「告诉搜索引擎我有哪些页面」的方式,但格式和 lastmod 用错反而有害。

广告位(百度联盟)

一、最小格式

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>https://www.it586.cn/tools/json-format.html</loc>
    <lastmod>2026-11-03</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>
</urlset>

二、lastmod 别乱写

这是最容易犯的错:每次生成 sitemap 都把 lastmod 更新成「今天」。后果是爬虫每次来都发现「所有页面都变了」,要么浪费抓取配额,要么逐渐不信任这个字段。

正确做法:

三、规模限制与索引文件

单个 sitemap 限制:最多 50000 条 URL,未压缩不超过 50MB。超过要拆分,并用索引文件汇总:

<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <sitemap>
    <loc>https://www.it586.cn/sitemap-tools.xml</loc>
    <lastmod>2026-11-03</lastmod>
  </sitemap>
  <sitemap>
    <loc>https://www.it586.cn/sitemap-articles.xml</loc>
  </sitemap>
</sitemapindex>

索引文件本身也可以再嵌套(最多两层)。大站按内容类型或月份拆分最便于维护。

四、怎么让搜索引擎知道

  1. robots.txt 声明(最通用):
   Sitemap: https://www.it586.cn/sitemap.xml
  1. 站长平台提交:百度搜索资源平台、Google Search Console、Bing Webmaster 都可以手动提交,能看到抓取与索引状态。
  2. 主动推送 API:比 sitemap 更快,适合新页面抢时效(用站长平台的主动推送 API 或自写脚本,思路相同)。

三者不冲突,建议都做:API 抢新页、sitemap 兜底全量。

五、只放该被收录的页面

放进 sitemap 就等于「请收录这个页面」。所以不要包含:

一个干净、全部 200 的 sitemap,比一个包含几千条无效 URL 的 sitemap 有效得多。

六、静态站怎么自动生成

本站的做法是构建期扫描页面并生成(gen_sitemap.py):

urls = []
for t in TOOLS:
    urls.append((DOMAIN + '/tools/' + t['slug'] + '.html', t['name'], '0.8', 'monthly'))
# 写 urlset...

要点:域名统一(别混用带 www 和不带的)、URL 与 canonical 一致、lastmod 取文件真实修改时间。

七、验证与排查

八、常见问题

现象原因
提交后一直「待处理」文件过大、格式错误、域名不匹配
收录数为 0内容质量低、被 robots 屏蔽、canonical 指向别处
索引数远小于提交数内容重复或价值低,属正常,需优化内容
报「URL 不属于该站点」loc 域名与站长平台验证的域名不一致

小结

loc 必填且与 canonical 一致;lastmod 要用真实更新时间;单文件 5 万条上限,超出拆索引;只放值得收录的 200 页面;robots 声明 + 平台提交 + 主动推送三条一起做。

本文相关工具(本地计算,无需上传)

更多使用教程