一、最小格式
<?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>
<loc>必填,必须是完整绝对 URL(含协议),且与页面 canonical 一致。<lastmod>是最后修改时间,格式YYYY-MM-DD或完整 ISO 8601。<changefreq>/<priority>现在基本被主流搜索引擎忽略,写了无害但别指望它影响排名。
二、lastmod 别乱写
这是最容易犯的错:每次生成 sitemap 都把 lastmod 更新成「今天」。后果是爬虫每次来都发现「所有页面都变了」,要么浪费抓取配额,要么逐渐不信任这个字段。
正确做法:
- 用内容真实的更新时间(文件 mtime、数据库
updated_at)。 - 内容没变就不更新。
- 全站同时刷新为同一天,等于告诉爬虫「这个字段不可信」。
三、规模限制与索引文件
单个 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>
索引文件本身也可以再嵌套(最多两层)。大站按内容类型或月份拆分最便于维护。
四、怎么让搜索引擎知道
- robots.txt 声明(最通用):
Sitemap: https://www.it586.cn/sitemap.xml
- 站长平台提交:百度搜索资源平台、Google Search Console、Bing Webmaster 都可以手动提交,能看到抓取与索引状态。
- 主动推送 API:比 sitemap 更快,适合新页面抢时效(用站长平台的主动推送 API 或自写脚本,思路相同)。
三者不冲突,建议都做:API 抢新页、sitemap 兜底全量。
五、只放该被收录的页面
放进 sitemap 就等于「请收录这个页面」。所以不要包含:
- 后台、登录页、测试页。
- 返回 404/500 的页面。
- 被
noindex的页面(矛盾信号)。 - 重复内容的参数页。
- 重定向的 URL(应放最终地址)。
一个干净、全部 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 取文件真实修改时间。
七、验证与排查
- 浏览器直接打开 sitemap,确认是合法 XML(不是 HTML 错误页)。
- 用站长平台的「sitemap 抓取」功能看解析结果与错误数。
- 检查
loc是否都能返回 200(批量curl -I)。 - 「已提交」不等于「已收录」,索引还要看内容质量与抓取预算。
八、常见问题
| 现象 | 原因 |
|---|---|
| 提交后一直「待处理」 | 文件过大、格式错误、域名不匹配 |
| 收录数为 0 | 内容质量低、被 robots 屏蔽、canonical 指向别处 |
| 索引数远小于提交数 | 内容重复或价值低,属正常,需优化内容 |
| 报「URL 不属于该站点」 | loc 域名与站长平台验证的域名不一致 |
小结
loc 必填且与 canonical 一致;lastmod 要用真实更新时间;单文件 5 万条上限,超出拆索引;只放值得收录的 200 页面;robots 声明 + 平台提交 + 主动推送三条一起做。