robots.txt 正确写法:实用基础规则与常见配置误区

📍 WDQWDWQD987AAAAA:216.73.217.98
📱 Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
🔗 /206afc4fb870.html
📄

robots.txt 是一个放置在网站根目录的纯文本文件,它的作用是告诉搜索引擎的抓取工具,网站中哪些区域可以访问,哪些区域应该避开。配置得当,能让搜索引擎将有限的抓取预算集中在重要页面上,同时保护后台、个人中心等敏感路径不被收录;如果配置失误,可能直接造成整站无法被收录,或者误伤了不该封锁的页面。这篇文章将从文件的结构、指令语法到实操配置,帮你完整掌握它的正确姿势。

1. 文件位置、命名与基本语法

这个文件的名字必须是全小写的 robots.txt,而且只能放在网站的根目录,也就是域名解析后直接访问的主目录下。整个文件内部由多个配置块组成,每个块之间使用空行隔开。块内的每一行都遵循“字段名:值”的格式,例如 Disallow: /private/。字段名(如 User-agent、Disallow)大小写不敏感,但后面的路径值通常区分大小写。你还可以使用 # 号在行尾或单独一行添加注释,方便日后维护时理解每条规则的用途。

一个基础的配置块包含两个部分:先用 User-agent 声明这条规则针对哪一个爬虫,然后跟随一条或多条具体的 Disallow 或 Allow 指令。大多数人会忽略的是,多个搜索引擎对规则的理解略有不同,例如 Google 支持更复杂的 Allow 覆盖逻辑,而部分其他爬虫对优先级处理较为简单,所以在做全局配置前,最好先明确目标对象。

2. 核心指令详解与实用配置示例

2.1 禁止抓取:Disallow 的基础用法

最常见的需求是禁止所有搜索爬虫访问全站,此时配置如下:

User-agent: *
Disallow: /

如果你只想屏蔽某个特定区域,比如后台管理目录和临时文件夹,则可以这样写:

User-agent: *
Disallow: /admin/
Disallow: /tmp/

这里有个细节必须提醒你:路径末尾的斜杠很有讲究。写成 /admin/ 只匹配名为 admin 的目录;如果不带斜杠写成 /admin,那么所有以 admin 开头的路径都会被屏蔽,比如 /administrator、/admin_login,很容易把不该屏蔽的页面一并挡在门外。

2.2 精确放行:Allow 与优先级判断

有些情况下,你希望封锁一个整个栏目,但单独保留其中某个特定页面。例如拦截整个 /blog/ 目录,但放行其中的专题页 /blog/news/:

User-agent: *
Disallow: /blog/
Allow: /blog/news/

要理解这两条规则到底哪条生效,你需要记住一条核心的匹配逻辑:如果两条规则匹配的路径长度相同,Allow 指令的优先级高于 Disallow;如果路径长短不一,则以更具体(也就是路径更长)的那条规则为准。因此上面这个例子中,/blog/news/ 能被正常抓取。为了让规则可预期,建议把更长的、更具体的 Allow 规则写在 Disallow 的后面。

2.3 分别对待不同爬虫与声明 Sitemap

你在服务器日志里常常能看到 Googlebot、Baiduspider、Bingbot 等不同的爬虫标识。你可以针对不同搜索引擎设置完全不同的策略。比如,对 Google 全站开放,但暂时关闭对百度的抓取:

User-agent: Baiduspider
Disallow: /

User-agent: Googlebot
Disallow:

注意,这里的 Disallow: 后面什么也不写,表示明确允许该爬虫抓取所有内容。另外,Sitemap 指令不属于任何单一爬虫的规则,它通常是独立的一行,放在文件末尾,用来告诉搜索引擎你的站点地图地址。

3. 新手容易踩中的配置陷阱

一个极易被忽视的问题是,在写规则时忘记考虑根路径(/)的匹配行为。Disallow: / 会拦截一切页面,包括首页;而 Disallow: (空值)则相反,它表示完全放行。两者只差一个斜杠,结果却天壤之别。建议在改动后,立即通过浏览器直接访问 你的域名/robots.txt,检查内容是否与预期一致。

此外,滥用 Allow 指令也可能导致意外。比如你想屏蔽 /api/ 目录下的所有接口数据,但无意中写了一行 Allow: /api/,这就等于把封锁规则完全抵消了。在编写时,尽量保持规则简洁,避免多条规则交叉覆盖,提高可读性。

另一个常见通病是,将访问权限控制误认为 robots.txt 的职责。你必须清楚,robots.txt 只是一个君子协定,它不能阻止恶意抓取,也并非安全工具。如果你需要真正保护敏感数据,应该依靠服务器端的身份验证或 IP 白名单,而不是依赖这个文本文件。

4. 验证规则效果的正确步骤

配置完成后,不要急着收工,建议按照下面的流程做一次完整检查:

  1. 先确认文件是否可以通过 https://你的域名/robots.txt 正常访问,并检查返回的 HTTP 状态码是否为 200。
  2. 在搜索引擎的站长平台中,找到“robots 测试工具”或类似的入口,输入你想测试的 URL,查看最终的抓取判定结果。
  3. 尝试搜索一个你的核心页面,确认它是否正常收录;如果整站收录量突然大幅下降,优先排查 robots.txt 是否误屏蔽了重要路径。
  4. 养成长期观察的习惯,每周都查看一次搜索引擎抓取统计报表,留意有没有异常爬取频率或突然下降的收录指数。

5. 常见问题

5.1 Q1:修改 robots.txt 后,多久能生效?

不同的搜索引擎抓取频率不一样。有的爬虫可能每隔几小时就会重新读取一次该文件,有的则要几天。比较稳妥的做法是,在修改后主动到搜索引擎的站长工具中提交“抓取更新”请求,这通常能将生效时间缩短到分钟级或小时级。

5.2 Q2:我能在 robots.txt 里写注释吗?会不会影响解析?

完全可以。注释以 # 号开头,既可以独占一行,也可以放在指令行的末尾。搜索引擎解析时遇到 # 号会直接忽略后续内容。不过不建议在路径值里面夹杂注释,那样容易破坏路径的完整性。

5.3 Q3:为什么我用 Disallow 屏蔽了某个目录,但该目录下的页面还是被收录了?

主要有两个原因:一是外部网站可能直接链向了该目录下的页面,搜索引擎依然会根据外部链接发现并评估它们,robots.txt 只能阻止抓取,不能阻止别人引用链接;二是可能你的规则写错了,比如路径末尾斜杠缺失导致匹配范围有偏差。建议先用测试工具确认规则是否匹配到了预期目标,再考虑网站是否还有其他途径暴露这些页面。

6. 总结

robots.txt 虽然只是一个几行字的文本文件,却能直接影响网站的搜索引擎抓取效率。掌握其基础语法是前提,核心在于理解路径匹配规则、Allow 与 Disallow 的优先级,以及区分不同的爬虫对象。配置时不要忘记将斜杠写规范,也要避免让规则过于复杂。不要把它当作安全工具,真正的敏感数据保护需要靠服务器层面的权限验证。每次修改后,务必利用站长工具的测试功能和日志记录进行复核,确保搜索引擎看到的规则与你的预期完全一致。

图1 图2

nginx