完整的 robots.txt 指南 2026 – 有效控制搜索引擎爬虫
robots.txt 文件是放置在网站根目录中的简单文本文件,它控制搜索引擎爬虫如何与您的内容交互。配置正确时,它可以优化爬虫效率、节省带宽,并确保敏感区域不被索引。然而,单一的配置错误就可能意外地将整个网站从搜索结果中移除,因此理解语法和常见陷阱至关重要。
目录
robots.txt 是什么以及为什么重要
robots.txt 文件是一个纯文本文件,用于指示搜索引擎爬虫您网站上哪些内容可以访问,哪些部分应该跳过。它必须放在根目录中(example.com/robots.txt),并且每个域名和协议(HTTP/HTTPS)都需要自己的文件。重要的是,robots.txt 仅为建议性的——它只是一个礼貌的请求,而不是安全屏障。来自主要搜索引擎的行为规范的爬虫会遵循这些规则,但恶意机器人常常忽视它们。要获得真正的内容保护,请改用身份验证或服务器级限制。
- 控制搜索引擎如何爬取和索引您的页面
- 通过防止不必要的机器人流量来节省带宽
- 指导爬虫查找您的网站地图位置
- 对用户不提供安全性——它对公众可见
- 仅为指导方针,而非对恶意机器人的屏障
- 帮助搜索引擎优先处理网站上的重要页面
基本的 robots.txt 语法和结构
robots.txt 使用以纯文本形式编写的简洁明了的键值指令。文件由一个或多个块组成,每个块以 User-agent 行开始,后面跟着 Disallow 或 Allow 规则。没有 XML 标头或标记——只有人类可读的指令。注释以哈希符号(#)开头,被爬虫忽略。值周围的空格自动被修剪,路径区分大小写,但指令名称不区分大小写。这种简单的结构使 robots.txt 对初学者易于上手,同时对复杂的网站结构仍足够强大。
- User-agent 识别规则适用的爬虫
- Disallow 告诉爬虫避免某个路径
- Allow 覆盖 Disallow 规则(对例外很有用)
- Sitemap 指向爬虫指向您的 XML 网站地图文件
- 注释以 # 开头,被解析器跳过
- 空行可以分隔块,但否则是可选的
User-Agent 和 Disallow 指令详解
每个 Disallow 规则前面必须有一个 User-agent 行,指定它针对的爬虫。当您写下 User-agent: Googlebot 时,随后的 Disallow 规则仅适用于 Google 的机器人。要对所有爬虫应用规则,请使用 User-agent: *(星号)。Disallow 中的路径以正斜杠开头,区分大小写;Disallow: /admin/ 阻止文件夹及其内部的所有内容,而 Disallow: /admin.php 仅阻止该特定文件。支持通配符(* 和 $)进行模式匹配。空的 Disallow(不带路径)意味着爬虫可以访问所有内容。
- User-agent: * 为所有爬虫设置规则
- Disallow: / 阻止整个网站——仅在真正必要时使用
- Disallow: /private/ 排除特定文件夹及其所有内容
- Disallow: /*.pdf$ 使用模式匹配阻止所有 PDF 文件
- User-agent: Baiduspider 仅针对百度的爬虫
- Allow: /exception/ 可以覆盖更广泛的 Disallow 规则
Allow 指令和 Sitemap 提示
Allow 指令覆盖前面的 Disallow 规则,用于创建例外很有用。如果您完全阻止 /uploads/,但希望机器人爬取 /uploads/public/,请在更广泛的 Disallow: /uploads/ 之前放置 Allow: /uploads/public/。规则顺序很重要;第一个匹配的规则生效。Sitemap 不是阻止规则,而是指向爬虫到您的 XML 网站地图文件的提示。您可以在单个 robots.txt 文件中列出多个 Sitemap 条目。搜索引擎使用这些提示更快地发现新页面,使 Sitemap 声明对于大型或频繁更新的网站至关重要。
- Allow 覆盖更广泛的 Disallow 规则以处理特定例外
- 规则顺序很重要——第一个匹配的规则被应用
- 多个 Sitemap 条目可以在一个文件中声明
- Sitemap 指令是可选的,但对大型网站推荐
- 使用 Sitemap 的完整 URL,而非相对路径
- 每个 Sitemap 行可以指向不同的 XML 文件
阻止您整个网站的常见错误
最致命的错误是错误的 Disallow: / 会阻止您的整个网站从搜索结果中出现。这通常发生在测试、语法探索期间,或不小心编辑且忘记恢复时。另一个常见错误涉及尾部斜杠——Disallow: /admin(不带尾部斜杠)可能不会阻止 /admin/,因为使用精确匹配解析。忘记每个域名变体(www 与非 www、HTTP 与 HTTPS)都需要自己的 robots.txt 是另一个陷阱。最后,编码问题(如 BOM(字节顺序标记)或非 UTF-8 字符)可能会无声地破坏文件。始终在使用 Google Search Console 进行更改后进行验证。
- Disallow: / 阻止整个网站——仅在真正必要时使用
- 尾部斜杠问题可能导致规则不按预期匹配
- 编码问题(BOM、非 UTF-8)无声地破坏解析
- 每个域名变体都需要自己的 robots.txt 文件
- 开发中遗留的测试规则可能意外阻止用户
- 在部署前在 Google Search Console 中验证您的更改
在 Google Search Console 中测试 robots.txt
Google Search Console 在"爬虫">"robots.txt 测试工具"下提供了内置的 robots.txt 测试工具来验证您的规则。连接您的属性后,粘贴要测试的 URL 并点击"测试"。该工具立即显示页面是被阻止(红色)还是允许(绿色)。您还可以在"查看获取的 robots.txt"下查看 Google 获取的确切 robots.txt 文件,这有助于捕捉编码错误或服务器上的意外更改。此测试工具仅适用于 Googlebot 规则,不适用于其他爬虫,因此测试结果是爬虫特定的。在进行任何 robots.txt 更改后运行测试对于防止意外阻止至关重要。
- 打开 Google Search Console 并导航至"爬虫"
- 从菜单中选择"robots.txt 测试工具"
- 粘贴要测试的完整 URL 或路径
- 检查结果(绿色 = 允许,红色 = 阻止)
- 查看获取的 robots.txt 以检测编码或服务器问题
- 进行任何更改后再次测试以验证成功
WordPress robots.txt 最佳实践
WordPress 在不存在 robots.txt 的情况下自动生成基本的 robots.txt,默认情况下通常阻止 /wp-admin/ 和 /wp-includes/。WordPress 仪表板(设置 > 阅读)提供了"阻止搜索引擎索引此网站"复选框,但这会添加 noindex meta 标签——它不会直接修改 robots.txt。要获得细粒度控制,请在您的 WordPress 根目录中创建自定义 robots.txt 文件;WordPress 会尊重它并停止自动生成。始终考虑 /wp-content/uploads/ 是否需要爬取;如果您托管不会从被索引中受益的媒体,阻止它可以节省带宽。SEO 插件(如 Yoast 或 Rank Math)可以在您更喜欢 GUI 时简化管理。
- WordPress 在 robots.txt 不存在时自动生成
- "阻止搜索引擎"选项添加 noindex,而不是 robots.txt
- 创建自定义 robots.txt 文件以覆盖自动生成
- 阻止 /wp-admin/ 和 /wp-includes/ 以防止不必要的爬取
- SEO 插件(如 Yoast 或 Rank Math)简化管理
- 创建后使用 Google Search Console 测试自定义 robots.txt
robots.txt 与 noindex Meta 标签——关键区别
robots.txt 和 noindex meta 标签都会影响索引,但它们的操作方式不同。robots.txt 完全防止爬虫访问,而 noindex 允许爬取但告诉爬虫"不要索引此页面"。如果您用 robots.txt 阻止页面,爬虫永远不会访问它,因此它不会看到 noindex 标签。相反,仅使用 noindex 意味着爬虫仍然会下载页面并消耗爬虫配额——它们只是不会索引它。使用 robots.txt 可以在您根本不想被访问的页面上节省爬虫配额;当您希望爬虫读取页面上的链接(用于 PageRank 流)但不在搜索结果中显示时,使用 noindex。永远不要在同一页面上使用两者——这是冗余的并且会浪费爬虫配额。
- robots.txt 完全阻止爬虫访问
- noindex 允许爬取但防止索引
- 如果 robots.txt 阻止页面,爬虫不会看到 noindex
- noindex 仍然消耗爬虫配额和带宽
- 使用 robots.txt 保留重要页面的爬虫配额
- 永远不要在同一页面上组合两者——这是冗余的
常见问题解答
如果我没有 robots.txt 文件会发生什么
没有 robots.txt,搜索引擎会假设他们可以爬取您的整个网站(除非被 noindex 或身份验证阻止)。这对于大多数网站来说不是灾难性的,但拥有一个结构良好的 robots.txt 帮助爬虫优先处理重要页面、节省带宽并避免爬取重复或低价值内容。
我需要为 www.example.com 和 example.com 分别创建 robots.txt 文件吗
是的,从技术上讲,每个域名变体都需要自己的 robots.txt,因为它们是单独的 URL。然而,大多数网站使用规范重定向或 HSTS 将所有流量导向单一版本(www 或非 www),使单个 robots.txt 足够。在 Google Search Console 中设置您的首选版本,以澄清要爬取和索引的 URL。
我可以为不同的爬虫(如 Googlebot 与 Bingbot)设置不同的 Disallow 规则吗
是的,当然可以。单个 robots.txt 可以为 User-agent: Googlebot 和 User-agent: Bingbot 拥有单独的块,每个块都有不同的规则。每个爬虫仅遵循与其 User-agent 声明匹配的规则。这种灵活性使您能够为每个搜索引擎的特定行为和需求独立优化爬取策略。
如果我在页面上添加 noindex,然后用 robots.txt 阻止它,两者都会生效吗
不,这是冗余且不必要的。如果 robots.txt 阻止页面,爬虫永远不会到达它,因此它不会看到 noindex 标签。对于完全拒绝访问,使用 robots.txt;对于您不想索引的可爬取页面,使用 noindex。永远不要在同一页面上组合两者——这会浪费爬虫配额并使搜索引擎困惑。