robots.txt 配置实用指南:语法规则与常见避坑要点

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

几乎所有做过网站的同学都听说过 robots.txt,它是放在网站根目录下的一个纯文本文件,作用是告诉搜索引擎爬虫哪些路径可以抓取、哪些不可以。配置得当,搜索引擎可以把有限抓取额度用在刀刃上,网站抓取效率自然高;可如果写错了,一些小细节也可能让搜索流量出现断崖式下跌。下面这篇文章,就围绕它的基本写法和那些容易踩的坑展开。

1. 先弄明白 robots.txt 能做什么、不能做什么

首先要明确,robots.txt 管的只是"抓取",而不是"收录"。你在这个文件里禁止了某个页面,爬虫确实不会去抓,但如果有其他网站链接指向它,这个 URL 仍然有可能出现在搜索结果中,只是没有抓取内容。所以想彻底不让某页出现在结果里,应该用 noindex 标签,而不是 robots.txt。

其次,它也拦不住恶意爬虫。文件里的规则对正规搜索引擎是约定,但对采集、攻击类程序基本无效。涉及用户隐私或后台地址的目录,务必叠加登录验证、IP 白名单等防护手段,不能只靠 robots.txt 锁门。建议每季度检查一次文件内容,防止误写把不该暴露的路径泄露出去。

2. 核心语法逐行拆解

整个文件由若干"规则组"构成,每一组以 User-agent 开头,格式统一为"字段名: 值"。写的时候注意冒号用英文半角,字段名建议小写,以减少跨搜索引擎的兼容性问题。

2.1 User-agent:规则给谁看

这个字段指定规则生效的对象。比如写 User-agent: Googlebot,就只对谷歌爬虫生效;写通配符 User-agent: *,就对所有搜索引擎生效。一个文件里可以写多个组,针对不同爬虫给不同权限。如果同一爬虫命中了多个组,主流搜索引擎按"最长匹配优先"处理,越具体的一组越先被采纳。

2.2 Allow 和 Disallow:双向路径控制

Disallow 用来声明禁止抓取的路径,Allow 相反,用来声明允许抓取。这里有个易混点:Disallow: 后面留空,意思是完全不设限制,等同允许抓取全站。当 Allow 和 Disallow 同时命中某条路径时,规则是谁的路径更长、更具体谁生效。例如同时有 Disallow: /api/ 和 Allow: /api/public/,那么后者更长,它的允许规则优先。路径建议写相对根路径,例如 /admin,别写成去掉域名后的绝对路径或其他容易引起歧义的形式。

2.3 Sitemap 和 Crawl-delay 补充指令

Sitemap 这一行用来声明网站地图的完整 URL,帮助爬虫快速拿到内容清单,一般放文件末尾。Crawl-delay 用于设定抓取间隔,但谷歌早就声明忽略这个值,想要控制抓取频率得去 Google Search Console 的后台设置。Bing 等其它搜索引擎仍然认这个指令,有需要可以保留。

3. 常见场景的范例写法

下面给出几个高频需求的标准写法,直接复制后改改路径就能用。

注意,第一组写法会让爬虫直接放弃抓取整站,生产环境千万别误用,否则页面会全部从索引中掉出。

4. 配置过程中最常踩的几个坑

有经验的老站长都会提醒:robots.txt 看起来简单,坑却不少。最常见的问题是用了大写字母,比如写成 Disallow: /Admin,而路径实际是 /admin,大小写不匹配就会失效。另一个高频问题是在 Disallow 的值里用了空格,比如 Disallow: /admin ,这会导致规则不生效。还有人在路径中写了通配符 $,谷歌支持,但其他搜索引擎支持有限,跨平台效果不稳定。

更隐蔽的问题是,有些开发者把抓取 URL 和页面实际路径搞混。比如网站用的是伪静态,实际地址是 /article?id=123,robots 里却写了 Disallow: /article,两者对不上,规则自然形同虚设。建议每次修改后用搜索引擎自带的抓取测试工具验证一下,确认规则生效再上线。

5. 常见问题

5.1 修改 robots.txt 后,搜索引擎多久会重新读取?

没有固定时间。谷歌一般会在几天内重新抓取一次该文件,但如果设置了较长的缓存时间,或者网站更新频率低,可能会延迟。建议修改后主动在搜索后台提交更新,加快生效。

5.2 Disallow 留空和注释有区别吗?

有区别。Disallow: 留空表示允许抓取,是明确的指令;而用井号 # 开头写注释只是说明性文字,本身不产生任何规则。有人误把注释当成屏蔽指令,结果规则从未生效。

5.3 同一个文件里写了多条同名规则组会怎样?

不同爬虫匹配到多个组时,最长匹配的规则组优先。如果两条组规则完全一致且都很短,部分搜索引擎会合并处理,有的则只认第一条。为了稳妥起见,建议同名爬虫只写一组,把路径规则集中在那一组里。

6. 结语

robots.txt 虽小,但语法细节和边界认识直接影响搜索抓取表现。配置时先想清楚要拦的是什么,再动手写路径,最后一定要用工具验证一遍。建议把现有文件备份一份,修改前对比差异,避免误操作。只要把抓取边界管好,把 noindex 用在收录控制上,网站的搜索表现就能保持稳定。

图1 图2

nginx