robots.txt 和 sitemap 的正确配置
第二章:搜索基础篇 · 第 30 问
robots.txt 和 sitemap.xml 是网站与搜索引擎"沟通"的两个基础文件。前者告诉爬虫"哪些不要抓",后者告诉爬虫"这些页面请来抓"。配置得当,能大幅提升收录效率;配置出错,可能导致整站消失在搜索结果中。
robots.txt 基本语法
robots.txt 必须放在网站根目录(如 https://example.com/robots.txt),基本语法:
User-agent: Baiduspider
Disallow: /admin/
Disallow: /search?
Allow: /
User-agent: Googlebot
Disallow: /admin/
Allow: /
Sitemap: https://example.com/sitemap.xml
关键规则:
User-agent:指定针对哪个爬虫(*代表所有)Disallow:禁止抓取的路径Allow:允许抓取(优先级高于Disallow)Sitemap:声明sitemap地址
哪些路径应该屏蔽?
| 应屏蔽 | 原因 |
|---|---|
| /admin/ 或 /wp-admin/ | 后台管理页面,无SEO价值 |
| /search? 或 /s? | 站内搜索结果页,产生大量低质重复页 |
| /cart/ /checkout/ | 购物车、结算页,无索引价值 |
| /?sort= /?filter= | 排序/筛选参数页面,造成重复内容 |
| /tag/ (视情况) | 标签页内容如果太薄,建议屏蔽 |
| /api/ | 接口地址,不应出现在搜索结果 |
千万别屏蔽的:
- CSS和JS文件(百度需要渲染页面)
- 图片目录(除非你不想图片被收录)
- 移动端页面
sitemap.xml 格式与规范
标准sitemap格式:
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://example.com/page1</loc>
<lastmod>2025-06-15</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
</urlset>
最佳实践:
- 每个sitemap文件不超过50,000条URL,文件大小不超过50MB
- 超过限制时使用sitemap索引文件拆分:
<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<sitemap>
<loc>https://example.com/sitemap-posts.xml</loc>
<lastmod>2025-06-20</lastmod>
</sitemap>
<sitemap>
<loc>https://example.com/sitemap-products.xml</loc>
<lastmod>2025-06-18</lastmod>
</sitemap>
</sitemapindex>
提交渠道
- 百度搜索资源平台:搜索服务 → 普通收录 → sitemap提交(支持txt和xml格式)
- Google Search Console:索引 → 站点地图 → 添加新的站点地图
- Bing Webmaster Tools:站点地图 → 提交站点地图
百度还支持通过"主动推送API"实时提交新页面URL,对时效性内容(如新闻)特别有用。
sitemap 更新频率建议
| 网站类型 | 更新频率 | 说明 |
|---|---|---|
| 新闻资讯 | 每小时/实时 | 配合百度主动推送 |
| 电商网站 | 每天 | 商品上下架变动频繁 |
| 企业官网 | 每周 | 内容变动不频繁 |
| 博客网站 | 发布新文章时 | 可用CMS自动更新 |
常见错误
- robots.txt写了Disallow: / 但忘了改回来:整站被屏蔽,这是最灾难性的错误
- sitemap中包含被robots屏蔽的URL:逻辑矛盾,搜索引擎会困惑
- sitemap中包含404页面:浪费抓取配额
- lastmod日期造假:每次都写当前日期,搜索引擎会忽略这个字段
- 未在robots.txt中声明sitemap位置:虽然不是必须,但推荐加上
- sitemap编码错误:必须使用UTF-8编码,URL中的特殊字符需要转义
实操建议
- 上线前必检查robots.txt:很多网站开发阶段用
Disallow: /屏蔽了全站,上线后忘记修改,导致几个月没有收录 - sitemap只放你希望被收录的规范URL:不放带参数的重复页、不放noindex页面、不放重定向源URL
- 每月检查一次sitemap健康度:用Screaming Frog等工具扫描,确保sitemap中没有4xx/5xx错误页面
用 AI 工具解决:robots.txt 与 sitemap 配置生成
场景一:根据网站类型生成 robots.txt
我的网站是 [企业官网/电商/内容博客],基于 [WordPress/自研],不需要屏蔽的目录有 [CSS/JS/图片],需要屏蔽的是 [后台/搜索页/参数页]。请帮我生成一份完整的 robots.txt:分 Baiduspider 和 Googlebot 写,屏蔽后台和站内搜索,Allow CSS/JS/图片,最后声明 sitemap 地址。同时注释每行规则的作用,方便我理解。
场景二:从现有 URL 清单生成 sitemap.xml
这是我网站的所有 URL 列表(粘贴 sitemap 或 URL 清单)。请帮我:1) 过滤掉带参数、含 admin/search 等不应收录的 URL;2) 按 sitemap 规范生成 XML,每条包含 loc、lastmod(用给定的日期)、changefreq、priority;3) 如果超过 5 万条,拆成 sitemap index 格式。
场景三:检查 sitemap 里的"雷"
这是一份 sitemap.xml(粘贴内容)。请帮我检查:1) URL 是否都匹配 robots.txt 的允许规则(我同时贴出 robots.txt);2) 有没有包含 noindex 页面或 301 重定向源;3) lastmod 是否合理(有没有全是今天的);4) XML 编码和转义是否正确。
场景四:生成正则,屏蔽参数型重复 URL
我的网站 URL 带这些参数:?sort=、?filter=、?page=、?utm_source=、?session_id=。请帮我生成 robots.txt 里的正则表达式规则来屏蔽这些参数页,并说明每条的匹配范围和可能误伤的情况。
注意:AI 的边界
- robots.txt 是"一票否决"配置:AI 生成后务必逐行人工复核,尤其不能出现
Disallow: /全站屏蔽,上线前在浏览器直接访问 robots.txt 确认 - sitemap 内容要真实:AI 只能按你贴的 URL 生成,它不会知道哪些页面是 noindex 或已删除,你得自己先过滤
- 别让 AI 编造 lastmod:lastmod 造假会被搜索引擎忽略并降低信任,日期必须来自你的真实文件修改时间
