技术 SEO · 第 2 篇

robots.txt 配置指南:语法、规则与实战排查

约 14 分钟阅读 更新于 2026-06-23 MagicSEO 编辑部 · 人工审核 技术地基

robots.txt 是网站与搜索引擎爬虫之间的第一份"协议"。它告诉爬虫哪些路径可以抓取、哪些不要访问。配置正确,可以引导爬虫高效抓取重要内容、节省抓取预算;配置错误,可能导致整站无法被收录。这篇文章从语法基础讲到实战配置,帮你写出安全、有效的 robots.txt。

robots.txt 是什么#

robots.txt 是一个纯文本文件,放在网站根目录下,通过 https://example.com/robots.txt 可以直接访问。它遵循 Robots Exclusion Protocol(RFC 9309) 标准,是搜索引擎爬虫访问网站时最先请求的文件之一。

当 Googlebot 或其他爬虫准备抓取一个 URL 时,它会先检查该站点的 robots.txt,确认目标路径是否被允许。如果 robots.txt 明确禁止了该路径,合规的爬虫会跳过这个 URL,不发起实际请求。

核心概念robots.txt 控制的是抓取(爬虫是否访问页面),不是收录(页面是否出现在搜索结果中)。这个区别在上一篇抓取与收录原理中有详细解释。

工作原理#

爬虫访问 robots.txt 的完整流程:

  1. 请求 robots.txt:爬虫在抓取网站任何页面之前,先请求 /robots.txt
  2. 缓存规则:爬虫会缓存 robots.txt 的内容(Google 通常缓存约 24 小时),不会每次抓取都重新请求。
  3. 匹配 User-agent:爬虫找到与自己匹配的 User-agent 段落,读取其中的 DisallowAllow 规则。
  4. 判断路径:将目标 URL 的路径与规则逐条匹配,决定是否抓取。
robots.txt 状态爬虫行为
正常返回 200解析规则,按规则决定是否抓取
返回 404视为没有限制,允许抓取所有路径
返回 5xx暂时跳过抓取,稍后重试;如果持续 5xx,Google 会在一段时间后视为允许全部抓取
文件过大(>500KB)Google 只解析前 500KB,超出部分的规则被忽略

基本语法#

robots.txt 由一个或多个"规则组"组成,每个规则组以 User-agent 行开头,后面跟着 Disallow 和/或 Allow 指令。Sitemap 指令可以放在文件任意位置。

robots.txt 基本结构
# 这是注释,爬虫会忽略

User-agent: *
Disallow: /admin/
Disallow: /search
Allow: /admin/public/

User-agent: Googlebot
Disallow: /tmp/

Sitemap: https://example.com/sitemap.xml

指令详解

指令作用说明
User-agent指定规则适用的爬虫* 表示所有爬虫;GooglebotBingbot 等指定特定爬虫
Disallow禁止抓取的路径路径前缀匹配。Disallow:(空值)表示不禁止任何路径
Allow允许抓取的路径用于在 Disallow 的范围内开放特定子路径
Sitemap声明 sitemap 地址必须是完整的绝对 URL,可以有多条
危险操作Disallow: / 会屏蔽整个网站的所有路径。如果你在测试环境部署时意外把这条规则带到了生产环境,整站都会从搜索结果中消失。上线前务必检查。

路径匹配规则#

robots.txt 的路径匹配是前缀匹配:规则路径是目标 URL 路径的前缀就算命中。Google 和 Bing 还支持两个扩展通配符:

符号含义示例匹配效果
*匹配任意数量的任意字符Disallow: /*.pdf屏蔽所有路径中包含 .pdf 的 URL
$匹配 URL 结尾Disallow: /*.pdf$只屏蔽以 .pdf 结尾的 URL

当同一个 URL 同时被 DisallowAllow 匹配时,Google 使用最具体的规则优先(路径更长的规则优先)。如果长度相同,Allow 优先。

匹配优先级示例
User-agent: *
Disallow: /products/
Allow: /products/featured/

# /products/list.html       → 被屏蔽(匹配 Disallow: /products/)
# /products/featured/new    → 被允许(Allow 路径更长,更具体)
# /products/                → 被屏蔽

常见配置场景#

以下是实际项目中最常见的 robots.txt 配置需求:

屏蔽后台和管理页面

robots.txt
User-agent: *
Disallow: /admin/
Disallow: /wp-admin/
Disallow: /dashboard/

屏蔽搜索结果和筛选页

站内搜索结果页和大量筛选组合页是抓取预算的最大浪费源。

robots.txt
User-agent: *
Disallow: /search
Disallow: /*?sort=
Disallow: /*?filter=
Disallow: /*&sort=
Disallow: /*&filter=

屏蔽特定文件类型

robots.txt
User-agent: *
Disallow: /*.pdf$
Disallow: /*.doc$

允许所有抓取(不做限制)

robots.txt
User-agent: *
Disallow:

Sitemap: https://example.com/sitemap.xml

针对不同爬虫设置不同规则

robots.txt
# Google 可以抓取所有内容
User-agent: Googlebot
Disallow:

# 其他爬虫屏蔽私有路径
User-agent: *
Disallow: /private/
Disallow: /staging/

robots.txt 和 noindex 的区别#

这是技术 SEO 中最常被混淆的两个概念。虽然都涉及搜索引擎对页面的处理,但它们解决的是完全不同的问题。

robots.txt Disallowmeta robots noindex
控制什么爬虫是否抓取(访问)页面搜索引擎是否将页面放入索引
放在哪里网站根目录的 robots.txt 文件页面 HTML 的 <head>
能否阻止收录不能可靠阻止——URL 仍可能通过外链出现在搜索结果中能——搜索引擎看到 noindex 后会从索引中移除
适用场景节省抓取预算、阻止爬虫访问低价值路径阻止特定页面出现在搜索结果中
绝对不要同时使用如果你用 robots.txt 屏蔽了一个页面,又在页面中加了 noindex——爬虫抓不到页面,就看不到 noindex 指令,noindex 就不会生效。想让 noindex 起作用,必须允许爬虫抓取该页面。

决策路径很简单:

  • 节省抓取预算,把爬虫资源集中在重要页面 → 用 robots.txt
  • 想让页面不出现在搜索结果中 → 用 noindex(并确保 robots.txt 不屏蔽它)
  • 想让页面完全不被任何人访问 → 用密码保护或服务器访问控制

常见爬虫 User-agent#

不同搜索引擎使用不同的 User-agent 标识。了解它们有助于编写针对性规则。

User-agent所属说明
GooglebotGoogle 网页搜索主要爬虫,抓取网页内容
Googlebot-ImageGoogle 图片搜索专门抓取图片
Googlebot-VideoGoogle 视频搜索专门抓取视频
BingbotMicrosoft BingBing 搜索引擎爬虫
Baiduspider百度百度搜索引擎爬虫
YandexYandex俄罗斯搜索引擎爬虫
GPTBotOpenAI用于 AI 训练数据抓取
Google-ExtendedGoogle用于 AI 训练(Gemini 等),不影响搜索索引
CCBotCommon Crawl开放网络爬虫,数据常用于 AI 训练
AI 爬虫控制如果你不希望网站内容被用于 AI 模型训练,可以单独屏蔽 GPTBotGoogle-ExtendedCCBot 等 AI 相关爬虫,同时不影响正常的搜索引擎索引。

用 Google Search Console 测试#

Google Search Console 提供了 robots.txt 测试工具,可以在你修改文件之前验证规则是否按预期工作。

  1. 打开 Google Search Console,在左侧菜单找到"设置"→"robots.txt"(或直接通过旧版工具 search.google.com/search-console/robots-testing-tool 访问)。
  2. 工具会显示你当前的 robots.txt 内容,并高亮解析结果。
  3. 在底部输入框中输入一个 URL 路径,点击"测试"。工具会告诉你该路径是被允许还是被屏蔽,以及是哪条规则命中的。
  4. 你可以直接在编辑器中修改规则内容进行测试,但修改不会自动保存——你需要手动更新服务器上的文件。

除了 Search Console,你也可以直接在浏览器中访问 https://你的域名/robots.txt 来检查文件是否可访问、内容是否正确。

更多详细信息参见 Google 官方文档:创建 robots.txt 文件

常见错误#

robots.txt 语法简单,但错误后果可能很严重。以下是最常见的几类问题:

1. 意外屏蔽整站

错误示例
# 这会屏蔽所有爬虫的所有路径!
User-agent: *
Disallow: /

最常见的场景:测试环境用了 Disallow: /,上线时忘记修改。

2. 屏蔽 CSS 和 JavaScript 资源

如果 robots.txt 屏蔽了 CSS 或 JavaScript 文件,Google 的渲染服务无法正确渲染页面,可能无法理解页面内容和布局,影响收录质量。

错误示例
# 不要这样做——Google 需要这些资源来渲染页面
User-agent: *
Disallow: /assets/css/
Disallow: /assets/js/

3. 把 robots.txt 放在错误位置

robots.txt 必须放在域名根目录下。https://example.com/blog/robots.txt 不会被任何爬虫识别。每个子域名需要自己独立的 robots.txt(https://blog.example.com/robots.txt)。

4. 混用 robots.txt 和 noindex

前面已经详细解释了——用 robots.txt 屏蔽页面的同时又期望 noindex 生效,这是矛盾的。

5. 使用 Crawl-delay 期望控制 Google 抓取频率

Google 不支持 Crawl-delay 指令。如果你需要控制 Google 的抓取速率,应该在 Google Search Console 中进行设置。Crawl-delay 对 Bing 和 Yandex 有效。

子域名与多站点#

robots.txt 的作用范围是单个源(protocol + host + port)。这意味着:

  • https://example.com/robots.txt 只控制 https://example.com 下的路径
  • https://blog.example.com 需要自己的 /robots.txt
  • http://example.comhttps://example.com 是不同的源,分别需要自己的 robots.txt(但通常你已经把 HTTP 301 到 HTTPS 了)

如果一个子域名没有 robots.txt(返回 404),爬虫会视为没有限制,允许抓取所有路径。

本站的 robots.txt#

MagicSEO 是一个纯静态内容站,所有页面都希望被搜索引擎收录,因此 robots.txt 非常简洁:

magic-seo.com/robots.txt
User-agent: *
Disallow:

Sitemap: https://magic-seo.com/sitemap.xml
本站示范对于内容为主的小型网站,最好的 robots.txt 就是最简单的——不屏蔽任何路径,声明 sitemap 地址。没有后台、没有搜索结果页、没有参数筛选页,就不需要复杂的屏蔽规则。让爬虫自由抓取所有内容页面,是对抓取预算最好的利用。

配置清单#

  • robots.txt 放在域名根目录,返回 200
  • 没有意外的 Disallow: / 屏蔽整站
  • 没有屏蔽 CSS、JavaScript 等渲染资源
  • 没有同时用 robots.txt 屏蔽和 noindex 同一页面
  • Sitemap 地址使用完整的绝对 URL
  • 用 GSC robots.txt 测试工具验证关键 URL
  • 每个子域名有自己的 robots.txt
  • 从测试环境到生产环境时检查 robots.txt 是否更新
  • 定期检查,确保规则仍然符合当前网站结构

常见问题#

robots.txt 能阻止页面出现在搜索结果中吗?

不能可靠地阻止。robots.txt 阻止的是抓取,不是收录。如果其他网站链接到被 robots.txt 屏蔽的 URL,搜索引擎仍可能根据链接锚文本等信息在搜索结果中展示该 URL(虽然没有摘要)。要阻止收录,应使用 meta robots noindex 或 X-Robots-Tag: noindex,并且不要用 robots.txt 屏蔽该页面。

robots.txt 文件必须放在哪里?

必须放在网站根目录下,通过 https://example.com/robots.txt 可以直接访问。放在子目录中(如 /blog/robots.txt)无效。每个子域名(如 blog.example.com)需要自己的 robots.txt。

robots.txt 写错了会怎么样?

如果语法错误,不同搜索引擎的解析行为可能不同——有的会忽略错误行,有的可能忽略整个文件。最危险的错误是意外屏蔽了重要页面或整个网站(如根目录 Disallow: /),这会导致搜索引擎无法抓取任何内容。修改 robots.txt 后务必用 Google Search Console 的 robots.txt 测试工具验证。

Crawl-delay 指令 Google 支持吗?

Google 不支持 robots.txt 中的 Crawl-delay 指令,会直接忽略它。Bing 和 Yandex 支持。如果需要控制 Google 的抓取速率,应该在 Google Search Console 中调整抓取速度设置。