robots.txt配置入门:语法要点、匹配规则与高频错误避坑

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

robots.txt 是网站与搜索引擎爬虫之间的沟通协议,通过它,站长可以明确告知哪些页面允许被抓取收录,哪些目录需要完全回避。配置得当能有效节约站点抓取配额并保护敏感数据,但一个标点或斜杠的疏忽,就可能导致屏蔽规则失效,甚至波及全站收录。这篇文章从文件放置开始,系统梳理语法规则、匹配逻辑与常见误区。

1. 文件放置位置与书写格式

搜索引擎只会从固定位置读取该文件。文件必须命名为小写 robots.txt,并直接放在域名根目录下,最终访问地址形如 https://yourdomain.com/robots.txt。如果文件名大小写不规范,或者文件被放进了子目录,爬虫会判定为文件不存在,此时所有屏蔽规则默认失效,全站内容都会被放开抓取。

文件内容以“组”为基本单元书写。每一组以 User-agent 行开始,下面是若干条规则,组与组之间用空行分隔,方便后期维护。字段名不区分大小写,但路径部分建议保持一致的大小写习惯,因为路径匹配通常区分大小写。

注释用 # 表示,既可以独占一行,也可以放在规则行末尾。善用注释记录每条规则的意图,对团队协作和后续调整都有帮助;注释内容不会参与抓取判定。

2. 核心规则:User-agent、Disallow 与 Allow

这三项构成了所有规则的基础。User-agent 用来指定规则作用于哪类爬虫,Disallow 声明禁止抓取的路径开头,Allow 则在被屏蔽的范围内单独放行某个路径。

屏蔽全站内容的写法为:

User-agent: *
Disallow: /

只屏蔽后台目录的写法为:

User-agent: *
Disallow: /admin/

这里有一个极易踩坑的点:Disallow 路径末尾的斜杠决定匹配范围。/admin/ 只匹配 admin 目录本身以及其下的子页面;如果写成 /admin(缺少末尾斜杠),则会匹配所有以 admin 开头的路径,比如 /administrator、/admin-center 等,极有可能误伤正常业务页面。

3. 规则冲突时的匹配优先级判定

当同一路径同时被 Allow 和 Disallow 规则命中时,并不能简单按书写先后顺序来判断。标准判定逻辑是:如果两条规则的路径长度完全相同,则 Allow 规则优先;如果长度不同,则路径更长、描述更具体的那条规则优先。

例如,想要屏蔽整个博客目录但单独放行其中一篇专题文章,可以这样配置:

User-agent: *
Disallow: /blog/
Allow: /blog/featured-post/

这种写法的效果是专题文章正常被抓取,其余博客内容则继续被屏蔽。在实际操作前,建议把需要限制的路径全部列出来,逐一模拟匹配,检查是否有规则互相交织,避免出现意外的放行或误屏蔽。

4. 声明 Sitemap 与其他细节

在文件末尾追加一行 Sitemap: https://yourdomain.com/sitemap.xml,可以把站点地图的地址直接告知爬虫,有助于提升新内容的发现效率。

配置过程中还有其他几个容易出问题的地方:

5. 常见问题解答

5.1 为什么我配置了 Disallow,页面还是被搜索引擎收录了?

最常见的原因是文件路径写错或文件名大小写不规范,导致爬虫根本没有读到该文件。其次,如果页面已经被收录,Disallow 规则并不会主动删除已有快照,它只管新页面的抓取。要清除已有的搜索结果,需要在搜索引擎站长平台提交删除请求或使用 noindex。
另外,某些搜索引擎对 robots.txt 的响应有缓存,规则生效会有延迟,请确认修改后文件能正常访问,并耐心等待几天再检查。

5.2 屏蔽爬虫是否等同于页面不被收录?

不完全等同。robots.txt 的作用是阻止爬虫抓取页面内容,但如果其他网站引用了该页面的链接,搜索引擎仍有可能通过链接本身获取到页面的标题和摘要信息,并在搜索结果中展示,只是无法抓取正文内容。
如果希望彻底不出现在搜索结果中,更可靠的做法是在页面 head 中放置 noindex 标签,或者对页面进行密码保护。对于后台管理类页面,建议两者结合使用。

5.3 个域名下有多个站点,robots.txt 怎么配置?

每个站点(包括主域名、子域名以及 HTTP 和 HTTPS 版)都需要拥有各自独立的 robots.txt 文件,且分别放置在对应域名的根目录下。不存在主站文件可以统一控制子站的情况。
如果你想针对不同站点屏蔽不同目录,只需按 域名/robots.txt 的方式分别访问并修改各自的文件即可;同一份规则不会被跨域名共享。

6. 结语

掌握了文件的放置位置、三条核心规则的含义、斜杠对路径匹配的影响以及冲突时的优先级判断,robots.txt 的配置就不会再让人头疼。建议先在本地整理一份路径清单,标注好每一条规则的意图,再动手写入文件,并逐一模拟匹配检查。
另外,修改完成后不要立刻依赖文件生效,而是持续关注搜索引擎站长平台中的抓取数据;如果现有页面已被收录而需要删除,务必同步使用平台工具处理。将 robots.txt 当作一项需要维护的长期配置,定期复查,才能避免因误伤造成不必要的损失。

图1 图2

nginx