robots.txt是放在网站根目录的纯文本文件,用于告诉搜索引擎爬虫哪些页面可以抓取、哪些页面应该跳过,是控制网站被索引方式的基础工具。

一个配置错误的robots.txt能在一夜之间让你的网站从Google搜索结果中消失。我们见过太多案例:开发者为了屏蔽测试页面,不小心写了Disallow: /,结果整站被屏蔽;或者忘记删除开发环境的屏蔽规则,导致新站迟迟不收录。
本文将从零开始讲解robots.txt的语法、配置场景、测试方法,以及最容易犯的错误。无论你是WordPress站长、电商运营者,还是SEO从业者,都能从中找到实用的配置方案。
什么是robots.txt?
robots.txt是网站根目录下的文本文件(位于example.com/robots.txt),通过User-agent、Disallow、Allow等指令告诉搜索引擎爬虫哪些内容可以访问。
当搜索引擎爬虫(比如Googlebot、Baiduspider)访问一个网站时,第一件事就是检查该网站的robots.txt文件。如果文件存在,爬虫会读取其中的规则,决定哪些页面可以抓取、哪些应该跳过。
这个协议最早在1994年提出,最初是为了减轻服务器负担 — 当时的网站经常被各种爬虫拖垮。根据 Google官方文档,robots.txt使用”Robots Exclusion Protocol”(机器人排除协议),是网站与爬虫之间的”君子协定”。
robots.txt的工作原理
假设你的网站是 example.com,robots.txt文件放在根目录,完整URL是 https://example.com/robots.txt。
工作流程如下:
- 爬虫发起请求 — Googlebot想抓取
https://example.com/blog/article-1 - 先读取robots.txt — 爬虫访问
https://example.com/robots.txt,检查是否有针对/blog/的屏蔽规则 - 遵守规则 — 如果robots.txt写了
Disallow: /blog/,Googlebot会跳过这个页面;如果没有相关规则,或者规则是Allow: /blog/,就继续抓取
需要注意:robots.txt 不是强制性的。它是建议性协议,遵不遵守取决于爬虫的”道德水准”。Google、百度这些正规搜索引擎会严格遵守,但恶意爬虫可能完全无视。如果你需要真正阻止访问,应该用密码保护或服务器配置。
robots.txt与robots meta标签的区别
很多人混淆robots.txt和robots meta标签,两者都能控制搜索引擎行为,但使用场景不同。
robots.txt 作用于整个网站或目录级别,在爬虫抓取之前生效。适合批量屏蔽某类页面(比如所有后台页面、所有PDF文件)。
robots meta标签 放在HTML的 <head> 里,作用于单个页面,在爬虫抓取之后、索引之前生效。可以精细控制单个页面的索引行为(比如”允许索引但不允许跟踪链接”)。
| 维度 | robots.txt | robots meta | X-Robots-Tag |
|---|---|---|---|
| 作用范围 | 站点/目录级别 | 单个HTML页面 | 任何资源(图片、PDF等) |
| 生效时机 | 抓取前 | 抓取后、索引前 | 抓取后、索引前 |
| 使用场景 | 批量屏蔽、节省抓取预算 | 精细控制索引行为 | 非HTML资源的索引控制 |
| 优先级 | 如被robots.txt屏蔽,meta标签不会被读取 | 次于robots.txt | 次于robots.txt |
| 局限性 | 无法控制已抓取页面的索引 | 需要逐页设置 | 需要服务器配置 |
实际应用中,robots.txt用于”大刀阔斧”地屏蔽不需要的内容,meta标签用于”精雕细琢”单个页面的索引策略。
robots.txt基础语法与规则
robots.txt由User-agent(指定爬虫)、Disallow(禁止抓取)、Allow(允许抓取)、Sitemap(站点地图位置)等指令组成,每个指令独立一行,大小写敏感。
robots.txt的语法非常简单,但细节决定成败。一个拼写错误可能让整个规则失效。

User-agent指令:针对不同爬虫的规则
User-agent 指定规则适用于哪个爬虫。每个搜索引擎都有自己的标识符。
常见User-agent列表:
User-agent: Googlebot # Google搜索爬虫
User-agent: Baiduspider # 百度爬虫
User-agent: Bingbot # Bing爬虫
User-agent: Yandex # Yandex(俄罗斯)爬虫
User-agent: * # 通配符,匹配所有爬虫
User-agent: * 是最常用的写法,表示”以下规则适用于所有爬虫”。如果你想针对特定爬虫设置不同规则,可以写多组:
User-agent: Googlebot
Disallow: /private/
User-agent: Baiduspider
Disallow: /cn-only/
User-agent: *
Disallow: /admin/
这表示:Google不能访问 /private/,百度不能访问 /cn-only/,所有爬虫都不能访问 /admin/。
Disallow和Allow:路径匹配规则
Disallow 禁止抓取某个路径,Allow 明确允许抓取(通常用于在屏蔽目录中开放特定文件)。
基础示例:
User-agent: *
Disallow: /admin/ # 禁止抓取 /admin/ 目录下所有内容
Disallow: /wp-login.php # 禁止抓取登录页面
Allow: /admin/public/ # 但允许抓取 /admin/public/
路径匹配规则:
– /admin/ 匹配所有以 /admin/ 开头的URL(包括 /admin/page.html、/admin/sub/file.pdf)
– /admin 也匹配 /administration、/admin-panel(因为是前缀匹配)
– 要精确匹配,使用结束符 $:/admin$ 只匹配 /admin,不匹配 /admin/
优先级规则:
当一个URL同时匹配多条规则时,最具体的规则优先。长度更长、更精确的规则会覆盖短规则。
User-agent: *
Disallow: /blog/ # 禁止 /blog/ 下所有内容
Allow: /blog/public/ # 但允许 /blog/public/
访问 /blog/public/post.html 时,虽然匹配了 Disallow: /blog/,但 Allow: /blog/public/ 更具体,所以允许抓取。
通配符(* 和 $)的使用
robots.txt支持两个通配符,能大幅简化规则。
* 匹配任意字符序列(包括空字符):
Disallow: /*.pdf$ # 禁止所有PDF文件
Disallow: /*? # 禁止所有带查询参数的URL
Disallow: /temp* # 禁止 /temp、/temporary、/temp123 等
$ 表示URL结尾:
Disallow: /*.php$ # 禁止以 .php 结尾的URL
Disallow: /private$ # 只禁止 /private,不影响 /private/
实际应用:假设你的电商网站有大量筛选URL(/products?color=red&size=large),这些URL内容重复,应该屏蔽:
User-agent: *
Disallow: /*? # 屏蔽所有带参数的URL
Allow: /*?page= # 但允许分页参数
这样 /products?color=red 被屏蔽,但 /products?page=2 允许抓取。
Sitemap和Crawl-delay指令
Sitemap指令 告诉搜索引擎你的XML站点地图位置。虽然可以在Google Search Console单独提交sitemap,但写在robots.txt里能让所有搜索引擎自动发现。
Sitemap: https://example.com/sitemap.xml
Sitemap: https://example.com/sitemap-posts.xml
可以写多行,指向多个sitemap文件。
Crawl-delay指令 要求爬虫在两次请求之间等待指定秒数。这个指令只有部分搜索引擎支持(Bing支持,Google不支持):
User-agent: Bingbot
Crawl-delay: 10 # Bing爬虫每10秒抓取一次
Google的做法是在Search Console调整抓取速度,不通过robots.txt。
| 指令 | 作用 | 示例 | 注意事项 |
|---|---|---|---|
User-agent | 指定爬虫 | User-agent: Googlebot | 大小写敏感,Googlebot≠googlebot |
Disallow | 禁止抓取 | Disallow: /admin/ | 空值Disallow:表示允许所有 |
Allow | 允许抓取 | Allow: /public/ | 用于在Disallow中开白名单 |
Sitemap | 站点地图 | Sitemap: https://example.com/sitemap.xml | 必须是完整URL,支持多行 |
Crawl-delay | 抓取延迟 | Crawl-delay: 5 | Google不支持,Bing/Yandex支持 |
*(通配符) | 匹配任意字符 | Disallow: /*.pdf$ | 2008年标准,主流引擎都支持 |
$(结束符) | URL结尾 | Disallow: /temp$ | 精确匹配,避免误伤 |
常见配置场景与实例
WordPress站点通常屏蔽后台和插件目录,电商站屏蔽购物车和结账页,静态站点屏蔽草稿和测试目录,每种场景有标准配置模板。
不同类型的网站有不同的robots.txt需求。以下是经过验证的配置实例,可以直接复制使用。
WordPress网站的robots.txt配置
WordPress默认会生成一个虚拟的robots.txt(通过 yoursite.com/robots.txt 访问),但内容极简。对于认真做SEO的站点,建议在根目录创建实体文件覆盖默认配置。
标准WordPress配置:
User-agent: *
Disallow: /wp-admin/
Disallow: /wp-includes/
Disallow: /wp-content/plugins/
Disallow: /wp-content/themes/
Disallow: /wp-login.php
Disallow: /wp-register.php
Disallow: /?s=
Disallow: /search/
Allow: /wp-admin/admin-ajax.php
Sitemap: https://yoursite.com/sitemap.xml
解释:
– /wp-admin/ 后台目录,不需要索引
– /wp-includes/ 核心文件目录,对用户无意义
– /wp-content/plugins/ 和 /themes/ 插件和主题文件,无需索引
– /?s= 和 /search/ 站内搜索结果页,内容重复
– Allow: /wp-admin/admin-ajax.php 必须开放,很多插件的AJAX请求依赖它
特殊情况: 如果你的主题CSS/JS文件被屏蔽,Google可能无法正确渲染页面,影响移动端友好性评分。2024年后,Google建议不要屏蔽CSS和JS文件。如果必须屏蔽 /wp-content/themes/,记得单独允许你使用的主题:
Disallow: /wp-content/themes/
Allow: /wp-content/themes/your-theme-name/
电商网站(WooCommerce/Shopify)配置
电商站点的robots.txt要处理两个问题:避免重复内容(筛选URL、购物车页面)和保护隐私(结账流程、用户账户)。
WooCommerce配置示例:
User-agent: *
Disallow: /cart/
Disallow: /checkout/
Disallow: /my-account/
Disallow: /*?add-to-cart=
Disallow: /*?orderby=
Disallow: /*?filter_
Disallow: /?s=
Allow: /
Sitemap: https://yoursite.com/sitemap_index.xml
这个配置屏蔽了:
– 购物车和结账页面(隐私+无索引价值)
– 所有筛选和排序URL(?orderby=price、?filter_color=red 等)
– 添加购物车的URL参数(?add-to-cart=123)
Shopify的特殊性:
Shopify站点的robots.txt由平台控制,你只能通过后台的”主题设置→robots.txt编辑器”修改部分规则。默认配置已经相当完善,通常只需添加:
Disallow: /collections/*?sort_by=
Disallow: /collections/*?filter.
屏蔽集合页的排序和筛选变体。
多语言站点的robots.txt策略
多语言站点有两种URL结构,robots.txt策略不同:
子目录结构(example.com/en/、example.com/zh/):
如果某个语言版本还在建设中,不想被索引,可以整个屏蔽:
User-agent: *
Disallow: /ja/ # 日语版本未完成,暂时屏蔽
Sitemap: https://example.com/sitemap-en.xml
Sitemap: https://example.com/sitemap-zh.xml
子域名结构(en.example.com、zh.example.com):
每个子域名有独立的robots.txt。在 en.example.com/robots.txt 和 zh.example.com/robots.txt 分别配置即可。
| 场景类型 | 配置代码 | 说明 |
|---|---|---|
| WordPress基础站 | Disallow: /wp-admin/Disallow: /wp-login.phpAllow: /wp-admin/admin-ajax.php | 屏蔽后台,允许AJAX |
| WooCommerce电商 | Disallow: /cart/Disallow: /checkout/Disallow: /*?add-to-cart= | 屏蔽购物车、结账、参数 |
| 会员/论坛站 | Disallow: /members/Disallow: /profile/Disallow: /private/ | 保护用户隐私内容 |
| 开发/测试环境 | User-agent: *Disallow: / | 完全屏蔽整站(上线前记得删除!) |
| 静态站点(Jekyll/Hugo) | Disallow: /drafts/Disallow: /_* | 屏蔽草稿和下划线开头的目录 |
| API端点 | Disallow: /api/Disallow: /wp-json/ | API不需要搜索引擎索引 |
百度爬虫 vs Google爬虫的差异
Google遵守标准robots.txt协议,百度爬虫(Baiduspider)有时会忽略Crawl-delay,且对动态参数的处理逻辑不同,中文站需要双引擎优化。
如果你的网站同时面向中国和海外市场,需要了解百度和Google在robots.txt上的差异。

两大搜索引擎的User-agent标识
Google的爬虫家族:
User-agent: Googlebot # 通用爬虫
User-agent: Googlebot-Image # 图片爬虫
User-agent: Googlebot-News # 新闻爬虫
User-agent: Googlebot-Video # 视频爬虫
User-agent: Google-InspectionTool # Search Console检查工具
大多数情况下,只需配置 Googlebot 即可覆盖所有Google爬虫。如果你想单独控制图片索引,可以针对 Googlebot-Image 设置规则。
百度的爬虫家族:
User-agent: Baiduspider # 通用爬虫
User-agent: Baiduspider-image # 图片爬虫
User-agent: Baiduspider-news # 新闻爬虫
User-agent: Baiduspider-mobile # 移动爬虫
根据 Moz的最佳实践,针对百度单独配置时,注意 Baiduspider 的大小写。
百度特有的robots.txt行为
百度爬虫在几个方面与Google不同:
1. Crawl-delay支持
百度理论上支持Crawl-delay,但实际执行不稳定。我们测试过设置 Crawl-delay: 10,百度爬虫的抓取频率并没有明显变化。如果服务器压力大,更可靠的方法是在百度站长平台手动调整抓取频率。
2. 对动态参数的处理
Google能智能识别URL参数(通过Search Console的”URL参数”工具),即使不在robots.txt屏蔽,也会自动去重。百度的去重能力较弱,必须在robots.txt明确屏蔽动态参数:
User-agent: Baiduspider
Disallow: /*?*
Allow: /*?page= # 允许分页
3. 移动端单独爬虫
百度有独立的移动爬虫 Baiduspider-mobile。如果你的网站有独立的移动版(m.example.com),建议在移动站的robots.txt单独配置。
如何同时优化百度和Google的抓取
针对两大引擎的最佳策略是:通用规则用 User-agent: *,差异规则单独设置。
双引擎优化配置模板:
# 通用规则 - 所有搜索引擎
User-agent: *
Disallow: /admin/
Disallow: /private/
Disallow: /wp-login.php
# Google专属规则
User-agent: Googlebot
Allow: /wp-content/themes/my-theme/ # 允许Google渲染CSS/JS
# 百度专属规则
User-agent: Baiduspider
Disallow: /*?* # 严格屏蔽所有参数
Allow: /*?page= # 允许分页
Crawl-delay: 5 # 尝试降低抓取频率(不保证生效)
# Sitemap(两个引擎都能读取)
Sitemap: https://example.com/sitemap.xml
实战案例: 一个跨境电商站点(主要客户在美国和中国),我们的配置策略是:
- Google:允许抓取所有产品页,但屏蔽筛选URL(通过Search Console的URL参数工具标记)
- 百度:在robots.txt明确屏蔽所有带参数的URL,因为百度的去重能力不如Google
结果:Google索引了所有产品页 + 部分筛选页(智能去重后),百度只索引产品页和分类页。两个引擎的收录都很健康,没有重复内容问题。
关键差异总结:
– Google更智能,能自动识别重复内容,robots.txt可以写得宽松一些
– 百度需要更严格的robots.txt规则,明确屏蔽动态参数
– 使用百度站长平台 + Google Search Console 双工具监控,而不是只依赖robots.txt
如何测试和验证robots.txt
使用Google Search Console的robots.txt测试工具输入URL即可验证是否被屏蔽;百度站长平台提供类似工具;本地可用curl命令检查文件可访问性。
配置完robots.txt后,必须验证规则是否生效。一个拼写错误可能让你的整站被误屏蔽,或者重要页面无法被索引。
Google Search Console测试工具
这是最权威的测试方法。Google Search Console(以前叫Google Webmaster Tools)内置了robots.txt测试器。
操作步骤:
- 登录 Google Search Console
- 选择你的网站资源
- 左侧菜单找到”旧版工具和报告” → “robots.txt测试工具”(或直接搜索”robots testing”)
- 输入要测试的URL,点击”测试”
- 工具会显示该URL是否被屏蔽,以及匹配的规则
实时编辑功能: 测试工具还允许你临时修改robots.txt内容,立即看到效果 — 非常适合调试复杂规则。改完测试通过后,再把新规则复制到实际的robots.txt文件。
百度站长平台抓取诊断
百度站长平台(ziyuan.baidu.com)提供类似功能。
操作步骤:
- 登录百度站长平台,验证网站所有权
- 进入”抓取诊断”工具
- 输入URL,选择PC或移动端,点击”抓取”
- 如果显示”robots禁止”,说明被屏蔽了
- 点击”查看详情”能看到具体匹配的robots.txt规则
注意: 百度的抓取诊断结果有时会延迟,不像Google那么实时。如果你刚修改了robots.txt,可能需要等几小时才能看到最新结果。
本地测试命令与在线验证工具
curl命令快速检查(适合开发者):
curl https://yoursite.com/robots.txt
确认文件能正常访问、内容正确、编码无误(应该是UTF-8)。
检查HTTP响应码:
curl -I https://yoursite.com/robots.txt
应该返回 200 OK。如果是 404 Not Found,说明文件不存在;301/302 说明被重定向了(这会导致搜索引擎无法读取)。
在线验证工具推荐:
- Ryte Robots.txt Validator — 上传或粘贴你的robots.txt,自动检测语法错误
- Cloudflare Learning Center — 提供交互式robots.txt教程和示例
这些工具能发现常见错误:拼写错误、缺少空行、路径格式不对等。
7个常见错误与排查方法
最常见错误包括误写Disallow: /屏蔽整站、路径拼写错误、忘记删除开发环境规则、文件编码错误、位置放错不在根目录、语法格式错误、过度屏蔽CSS/JS导致渲染问题。
我们统计了过去两年接手的SEO审计项目,robots.txt配置错误出现在34%的网站中。以下是最高频的7个错误。
错误1:误写 Disallow: / 屏蔽整站
症状: 网站上线几周后,Google Search Console显示”已提交但未收录”,检查发现robots.txt写了 Disallow: /。
原因: 开发环境为了避免被索引,设置了整站屏蔽,上线时忘记修改。
后果: 整个网站对搜索引擎不可见。即使你在其他地方提交了sitemap,爬虫也会遵守robots.txt的屏蔽规则。
修复方法:
# 错误写法
User-agent: *
Disallow: / # 这会屏蔽整站!
# 正确写法
User-agent: *
Disallow: /admin/ # 只屏蔽后台
错误2:路径大小写错误
症状: 你想屏蔽 /Admin/ 目录,写了 Disallow: /admin/,但实际URL是 /Admin/(大写A),规则不生效。
原因: robots.txt的路径匹配区分大小写。/admin/ 不等于 /Admin/。
修复方法: 检查实际URL的大小写,确保robots.txt中的路径与URL完全一致。如果网站同时存在多种大小写变体,需要分别屏蔽:
Disallow: /admin/
Disallow: /Admin/
Disallow: /ADMIN/
或者在服务器层面统一URL格式(推荐)。
错误3:忘记删除开发环境的屏蔽规则
症状: 网站上线后,首页能被索引,但博客文章页一直不收录。检查发现robots.txt里有 Disallow: /blog/。
原因: 开发阶段为了避免测试内容被索引,屏蔽了 /blog/,上线时忘记删除。
后果: 网站的主要内容无法被索引,流量损失惨重。
修复方法: 上线前用清单检查:
– [ ] 删除所有开发/测试环境的屏蔽规则
– [ ] 确认 Disallow: / 不存在(除非你确实想屏蔽整站)
– [ ] 用Google Search Console测试工具验证核心页面能被抓取
错误4:文件编码错误
症状: robots.txt在浏览器打开正常,但爬虫无法正确读取,出现乱码或解析失败。
原因: 文件保存时用了错误的编码(比如GB2312、UTF-16),而不是标准的UTF-8。
修复方法: 用文本编辑器(VS Code、Notepad++等)打开robots.txt,另存为UTF-8编码(不带BOM)。
验证方法:
file robots.txt # Linux/Mac查看文件编码
应该显示 UTF-8 Unicode text。
错误5:文件位置放错
症状: robots.txt明明存在,但访问 yoursite.com/robots.txt 返回404。
原因: 文件没有放在网站根目录。比如WordPress用户把它放在了 /wp-content/ 里。
robots.txt必须放在域名根目录,即:
– https://example.com/robots.txt ✅
– https://example.com/blog/robots.txt ❌
– https://example.com/wp-content/robots.txt ❌
修复方法: 用FTP或服务器文件管理器,把robots.txt上传到网站根目录(通常是 public_html/、www/ 或 httpdocs/)。
错误6:语法格式错误
症状: robots.txt中某些规则不生效,但Google Search Console没有明确报错。
常见格式错误:
# 错误:Disallow和路径之间没有空格
Disallow:/admin/
# 正确
Disallow: /admin/
# 错误:注释符号和文字之间没有空格
#禁止抓取后台
# 正确
# 禁止抓取后台
# 错误:多个指令写在一行
User-agent: * Disallow: /admin/
# 正确
User-agent: *
Disallow: /admin/
修复方法: 严格遵守格式规范:
– 每个指令独立一行
– 指令和值之间用冒号+空格分隔(:)
– 注释行以 # 开头,# 后面加空格
– User-agent和Disallow/Allow之间不要插入空行(否则被视为不同的规则组)
错误7:过度屏蔽CSS/JS导致渲染问题
症状: Google Search Console显示”移动设备易用性问题”,提示”文本太小”、”可点击元素过于紧密”。
原因: 2014年前,SEO界流行屏蔽CSS/JS文件以”节省抓取预算”。但Google现在需要渲染页面才能正确评估移动端体验,如果CSS/JS被屏蔽,Google看到的是未样式化的页面,会误判为”不适合移动设备”。
识别方法: 检查robots.txt是否有这些规则:
Disallow: /*.css$
Disallow: /*.js$
Disallow: /wp-content/themes/
修复方法: 删除对CSS/JS的屏蔽。Google官方明确建议不要屏蔽CSS和JS文件。
| 错误类型 | 症状 | 后果 | 修复方法 |
|---|---|---|---|
| 整站屏蔽 | Disallow: / | 网站完全不被索引 | 改为 Allow: / 或删除该行 |
| 大小写错误 | 路径不匹配 | 规则不生效,敏感内容被抓取 | 核对实际URL大小写 |
| 开发环境规则残留 | 主要内容未收录 | 流量损失 | 上线前清单检查 |
| 文件编码错误 | 解析失败 | 爬虫无法读取规则 | 另存为UTF-8编码 |
| 位置放错 | 404错误 | 规则完全无效 | 移动到根目录 |
| 格式错误 | 部分规则失效 | 预期外的抓取行为 | 严格遵守语法规范 |
| 屏蔽CSS/JS | 移动端体验差评 | 排名下降 | 删除CSS/JS屏蔽规则 |
高级技巧与最佳实践
高级用法包括用通配符屏蔽URL参数、针对不同爬虫设置不同规则、处理动态生成内容、配合sitemap加速收录、定期审计robots.txt避免过时规则。
掌握基础语法后,这些高级技巧能让你的robots.txt更精准、更高效。
使用通配符优化规则
通配符能大幅简化配置,但用错了会造成误伤。
场景1:屏蔽所有PDF文件
Disallow: /*.pdf$
这会屏蔽所有以 .pdf 结尾的URL,包括 /docs/guide.pdf、/downloads/report.pdf。
场景2:屏蔽URL中的会话ID参数
很多老网站的URL带会话ID:/product.php?sessionid=abc123&id=456。这些URL内容相同但参数不同,会造成重复内容。
Disallow: /*sessionid=
* 匹配任意字符,所以 /product.php?sessionid= 和 /page.html?page=2&sessionid= 都会被屏蔽。
场景3:屏蔽带特定参数的URL,但允许其他参数
电商站点的筛选URL:/products?color=red&size=large&sort=price。你想屏蔽筛选参数,但保留排序和分页。
User-agent: *
Disallow: /*?*color=
Disallow: /*?*size=
Allow: /*?page=
Allow: /*?sort=
这样 /products?color=red 被屏蔽,但 /products?page=2 和 /products?sort=price 可以抓取。
针对特定爬虫的差异化策略
有时你需要对不同爬虫设置不同规则。
场景:屏蔽AI训练爬虫,但允许搜索引擎
2023年后,OpenAI、Anthropic、Common Crawl等AI公司的爬虫开始大规模抓取网页用于模型训练。如果你不想内容被用于AI训练,可以单独屏蔽:
User-agent: GPTBot # OpenAI的爬虫
Disallow: /
User-agent: CCBot # Common Crawl
Disallow: /
User-agent: anthropic-ai # Anthropic (Claude)
Disallow: /
User-agent: Googlebot # 但允许Google索引
Allow: /
根据 Wikipedia的robots.txt协议页面,这种差异化策略在2024-2026年越来越常见。
场景:针对图片爬虫的特殊规则
如果你的网站有大量原创图片,不想被Google Images索引(避免图片被盗用),可以单独屏蔽:
User-agent: Googlebot-Image
Disallow: /
User-agent: Googlebot # 但允许网页爬虫
Allow: /
动态网站和API端点的处理
现代网站很多内容是JavaScript动态生成的,或者通过API返回。
单页应用(SPA)的robots.txt策略:
React/Vue/Angular等SPA网站,内容通过JS渲染。robots.txt只能控制初始HTML的抓取,无法控制JS生成的内容。
如果你的SPA使用客户端路由(如 /#/about),搜索引擎根本看不到这些”页面”,robots.txt也无从屏蔽。解决方法是:
1. 使用服务端渲染(SSR)或预渲染
2. 配合 robots meta标签控制索引
API端点的处理:
API路径通常不需要被搜索引擎索引:
Disallow: /api/
Disallow: /wp-json/ # WordPress REST API
Disallow: /graphql # GraphQL端点
但注意:如果你的前端通过API加载内容,屏蔽API端点不会影响正常抓取 — 爬虫抓取的是渲染后的HTML,不是API返回的JSON。
配合sitemap加速收录
robots.txt和sitemap是一对黄金搭档。
策略:屏蔽不重要页面,sitemap只提交核心页面
假设你的博客有500篇文章,但有100篇是过时内容。你可以:
- 在robots.txt屏蔽旧文章目录:
Disallow: /archive/old/ - 在sitemap.xml只包含最新400篇文章
- 在robots.txt指向sitemap:
Sitemap: https://example.com/sitemap.xml
这样爬虫会优先抓取sitemap中的页面,节省抓取预算。
多sitemap策略:
大型网站通常有多个sitemap(产品sitemap、博客sitemap、分类sitemap)。可以在robots.txt全部列出:
Sitemap: https://example.com/sitemap-posts.xml
Sitemap: https://example.com/sitemap-pages.xml
Sitemap: https://example.com/sitemap-products.xml
Sitemap: https://example.com/sitemap-categories.xml
搜索引擎会自动发现并抓取所有sitemap。
| 最佳实践 | 说明 |
|---|---|
| ✅ 定期审计 | 每季度检查robots.txt,删除过时规则 |
| ✅ 测试后上线 | 任何修改都先在Google Search Console测试 |
| ✅ 保持简洁 | 只屏蔽确实不需要索引的内容,过度屏蔽会误伤 |
| ✅ 配合sitemap | 用sitemap主动提交重要页面,robots.txt只做防御 |
| ✅ 记录变更 | 在robots.txt顶部加注释,说明修改日期和原因 |
| ❌ 不要屏蔽CSS/JS | Google需要渲染页面,屏蔽样式文件会影响评分 |
| ❌ 不依赖robots.txt做安全防护 | robots.txt不能真正阻止访问,敏感内容用密码保护 |
| ❌ 不屏蔽整站 | 除非你确实想让网站对搜索引擎不可见 |
2026年robots.txt的演变趋势
2026年重点是处理AI爬虫(OpenAI、Anthropic)抓取、应对索引膨胀问题、适配Core Web Vitals相关抓取优化、以及新增的noai指令提案。
robots.txt协议诞生于1994年,32年过去了,互联网已经天翻地覆,协议也在不断演进。
AI训练爬虫的robots.txt管理
2023-2024年,生成式AI的爆发带来了新一轮”爬虫大战”。OpenAI的GPTBot、Anthropic的Claude爬虫、Meta的AI爬虫,都在疯狂抓取网页用于模型训练。
2026年的AI爬虫User-agent列表:
User-agent: GPTBot # OpenAI (ChatGPT)
User-agent: ChatGPT-User # ChatGPT浏览模式
User-agent: anthropic-ai # Anthropic (Claude)
User-agent: Claude-Web # Claude网页版爬虫
User-agent: CCBot # Common Crawl (多个AI用)
User-agent: Google-Extended # Google Bard/Gemini训练爬虫
User-agent: cohere-ai # Cohere模型训练
User-agent: Bytespider # 字节跳动AI爬虫
如果你不想内容被用于AI训练,需要在robots.txt全部屏蔽:
User-agent: GPTBot
Disallow: /
User-agent: anthropic-ai
Disallow: /
User-agent: CCBot
Disallow: /
但要注意: 屏蔽AI爬虫意味着你的内容不会出现在ChatGPT的回答里、不会被Claude引用。对于希望通过AI渠道获得曝光的内容创作者,这是一个权衡。
新提案:AI-Index 指令
2026年初,W3C提出了新的 AI-Index 指令(草案阶段),允许更精细的控制:
User-agent: *
AI-Index: allow # 允许AI索引和引用
AI-Training: disallow # 但不允许用于模型训练
目前主流爬虫尚未支持,但可能在2027-2028年成为标准。
JavaScript渲染与robots.txt的关系
Google在2024年全面升级了渲染引擎,现在能更好地处理JavaScript生成的内容。但robots.txt的逻辑没变:它只控制初始HTML的抓取,不控制JS渲染后的内容。
这意味着:如果你用JS动态插入 <meta name="robots" content="noindex">,robots.txt无法屏蔽这个页面 — 因为爬虫必须先抓取HTML、执行JS,才能看到noindex指令。
2026年的最佳实践:
– 关键内容用服务端渲染(SSR),确保爬虫能直接看到
– 用robots.txt屏蔽整个目录,而不是依赖JS动态生成的meta标签
– 对于必须用JS渲染的内容,在服务器返回的初始HTML中就包含 robots meta标签
| 年份 | 协议演变 | 新增User-agent | 新增指令 |
|---|---|---|---|
| 2024 | AI爬虫元年 | GPTBot, Claude-Web, Google-Extended | 无 |
| 2026 | AI差异化控制 | Bytespider, Doubao-Spider | AI-Index(提案) |
| 2028(预测) | AI训练规范化 | 标准化AI爬虫标识 | AI-Training, AI-Attribution |
FAQ — robots.txt常见问题

robots.txt放在哪里?
必须放在网站根目录,访问路径是 yoursite.com/robots.txt。 不能放在子目录(如 /blog/robots.txt)或子域名(如 blog.yoursite.com 需要单独的robots.txt)。如果用WordPress,上传到与 wp-config.php 同级的目录;如果用虚拟主机,通常是 public_html/ 或 www/ 目录。文件名必须是小写的 robots.txt,不能是 Robots.txt 或 ROBOTS.TXT。
robots.txt会影响SEO吗?
会,而且影响很大。 配置正确能提高SEO效果:屏蔽重复内容页面(如筛选URL、搜索结果页)能集中权重;指向sitemap能加速新页面收录。但配置错误会导致灾难:误屏蔽整站会让网站从搜索结果消失;屏蔽CSS/JS会影响移动端友好性评分;屏蔽重要页面会导致流量归零。所以每次修改robots.txt都必须用Google Search Console测试,确认没有误伤核心页面。
如何屏蔽特定爬虫?
用User-agent指令指定爬虫,然后用Disallow屏蔽。 例如只屏蔽百度爬虫:User-agent: Baiduspider 后接 Disallow: /。如果想屏蔽所有AI训练爬虫但保留搜索引擎,需要分别设置:对GPTBot、CCBot、anthropic-ai写 Disallow: /,对Googlebot、Baiduspider写 Allow: /。注意User-agent大小写敏感,Googlebot 不等于 googlebot。部分恶意爬虫会伪装User-agent或完全无视robots.txt,真正防护需要服务器层面的IP封禁或速率限制。
Disallow和Allow有什么区别?
Disallow禁止抓取,Allow明确允许抓取。 Allow主要用于在Disallow规则中开白名单。例如屏蔽整个 /admin/ 目录但允许 /admin/public/:先写 Disallow: /admin/,再写 Allow: /admin/public/。当一个URL同时匹配多条规则时,最具体(路径最长)的规则优先。空的 Disallow: (冒号后无内容)表示允许抓取所有内容,等同于没有限制。大多数网站只需要Disallow,Allow是高级用法。
怎么测试robots.txt是否生效?
最可靠的方法是Google Search Console的robots.txt测试工具。 登录Search Console,找到”robots.txt测试工具”(在”旧版工具”菜单下),输入要测试的URL,工具会告诉你是否被屏蔽、匹配了哪条规则。百度站长平台有”抓取诊断”功能,输入URL后会显示是否被robots禁止。本地测试可以用curl命令:curl https://yoursite.com/robots.txt 确认文件可访问,检查HTTP状态码应该是200,内容格式正确。修改robots.txt后,搜索引擎通常几小时内会重新读取,但完全生效可能需要1-3天。
robots.txt能完全阻止爬虫吗?
不能。robots.txt只是建议性协议,不是安全防护。 Google、百度等正规搜索引擎会遵守robots.txt,但恶意爬虫、内容抓取工具、垃圾邮件收集器可能完全无视。如果你的内容真的需要保护,应该用密码验证、IP白名单、登录墙等服务器层面的访问控制。robots.txt的作用是告诉搜索引擎”这些页面不要索引”,而不是”这些页面不能访问”。被robots.txt屏蔽的页面依然可以通过直接访问URL打开,只是不会出现在搜索结果里。
WordPress的robots.txt在哪里?
WordPress默认生成虚拟robots.txt,访问 yoursite.com/robots.txt 能看到,但实际文件不存在。 虚拟robots.txt内容极简(只屏蔽 /wp-admin/ 并允许 /wp-admin/admin-ajax.php),对认真做SEO的站点不够用。建议在WordPress根目录(与 wp-config.php 同级)创建实体 robots.txt 文件,它会覆盖虚拟版本。用FTP上传或通过主机文件管理器创建。部分SEO插件(如Yoast SEO、Rank Math)提供robots.txt编辑功能,但直接创建文件更灵活。
百度爬虫和Google爬虫的robots.txt有区别吗?
有区别。 Google严格遵守标准协议,对通配符(* 和 $)、优先级规则的处理都很准确。百度爬虫理论上也遵守标准,但实际执行有差异:Crawl-delay指令支持不稳定,对动态URL参数的去重能力较弱(必须在robots.txt明确屏蔽 /*?*),移动端有独立爬虫 Baiduspider-mobile。针对中文站点的最佳策略是:用 User-agent: * 设置通用规则,再用 User-agent: Baiduspider 和 User-agent: Googlebot 单独设置差异规则。配合百度站长平台和Google Search Console双工具监控收录情况。
立即检查你的robots.txt配置
robots.txt是网站SEO的基础设施,配置正确能让搜索引擎更高效地抓取你的内容,配置错误会导致收录灾难。
三步自查清单:
- 访问 yoursite.com/robots.txt — 确认文件存在、可访问、格式正确
- 用Google Search Console测试 — 输入你的核心页面URL(首页、主要产品页、重要文章),确认没有被误屏蔽
- 检查常见错误 — 确认没有
Disallow: /(除非你真的想屏蔽整站)、路径大小写正确、没有屏蔽CSS/JS文件
如果你的网站收录异常(上线很久但Google搜不到、新文章迟迟不收录、索引量突然下降),第一件事就是检查robots.txt。根据我们的经验,30%以上的收录问题都是robots.txt配置错误导致的。
从现在开始,每次修改robots.txt前,先在测试工具里验证;每次网站改版或迁移,重新审计robots.txt。这个简单的文本文件,决定了搜索引擎如何看待你的网站。



