robots.txt 配置教程:核心语法与高频踩坑点避坑指南

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

当搜索引擎爬虫访问你的站点时,它首先会查看根目录下的 robots.txt 文件,以此判断哪些路径可以抓取、哪些应该放弃。这个文本文件看似简单,却在页面收录与权重传递中扮演关键角色。配置精准,能引导蜘蛛高效抓取重点内容;配置有误,轻则部分页面消失于搜索结果,重则可能影响整站流量的正常获取。理解其语法和边界,是网站运营的基本功。

1. 明确它的职责范围:一份建议书,而非安全锁

robots.txt 本质上是一份给守规矩的访客看的“建议清单”。它无法强制任何客户端执行,更不能像密码一样阻止访问。比如,你可以在文件中屏蔽某个后台目录,但只要明确知道 URL,任何人都能通过浏览器直接打开页面。真正的敏感数据,永远需要权限验证来兜底。

同时,它也不负责决定页面是否出现在搜索结果里。屏蔽抓取和阻止收录是两个概念:即便禁止爬虫访问某页面,若其他网站存在指向该页的外链,搜索引擎依然可能索引它,只是摘要可能来自锚文本。想要页面彻底从结果中消失,应使用 noindex 标记,而非依赖 robots.txt。此外,大部分恶意爬虫根本不会遵守此协议,甚至专门扫描其中列出的路径,因此切勿将任何安全需求寄托于该文件。

2. 语法规则精讲:字段含义与匹配顺序

文件由多条规则组构成,每条规则组都需以 User-agent 行开头,其余指令则列出允许或禁止的路径。语法要求并不复杂,但细节决定成败。

2.1 User-agent:划清适用边界

该行用于指定规则组生效的对象。例如,针对谷歌蜘蛛写 User-agent: Googlebot,针对所有蜘蛛则使用通配符 User-agent: *。注意,不同组之间互不干扰,建议将通用规则放在文件靠前位置,将特定对象规则置于其后,以便后续覆盖或补充细化。

2.2 Allow 与 Disallow:优先级最常见的误区

Disallow 表示禁止访问,Allow 表示准许访问。若某行写为 Disallow: 且后面为空,则代表允许全站抓取,这等同于没有设置任何限制。当两条规则产生冲突时,搜索引擎依据“最长匹配优先”的原理解释:谁的路径字符串更长、更精准,谁就胜出。举个例子,规则组内同时存在 Disallow: /api/ 和 Allow: /api/public/,因为后者路径更长,所以 public 子目录可正常抓取。

2.3 Sitemap 与 Crawl-delay:常被忽略的辅助项

Sitemap 指令用于声明站点地图的绝对 URL,通常置于文件末尾,提醒爬虫快速获取内容清单。Crawl-delay 则用于设定访问间隔,但需特别注意,Google 爬虫并不识别此参数,其官方建议是通过 Search Console 控制抓取频率,而非在文件中设置。

3. 配置中常见的高频陷阱与规避方法

路径写法是事故高发区。Disallow 后的值应使用从根目录开始的相对路径,例如屏蔽后台应写 Disallow: /admin/,千万不要写成带域名的完整网址。符号方面,通配符 * 可以匹配任意字符串,$ 则匹配路径结尾,但各搜索引擎对这两者的支持程度并不一致,复杂表达式在不同爬虫间可能产生截然不同的结果,因此尽量保持规则简洁。

另一个隐蔽问题是空格使用不规范。字段名称、冒号和值之间的空格容易被忽略,虽然多数爬虫会进行容错处理,但为了减少解析歧义,按“冒号后跟一个空格”的标准格式书写更稳妥。还需要注意的是,规则区分大小写,/Photos/ 和 /photos/ 会被视为不同的路径,在配置时需与线上目录结构严格对应。还有一点值得一提:文件编码必须保存为无 BOM 的纯文本,并在修改后实时检查线上文件的最终内容,避免出现乱码或空行导致规则失效。

4. 更实际的应用:给爬虫铺路比设障更重要

许多站点配置 robots.txt 的主要目的是屏蔽后台目录、搜索页或参数冗长的筛选链接,防止重复内容过度消耗配额。实现这一点前,先使用“Disallow: 全部”再按需放行,还是先全部允许再针对性屏蔽,取决于站点结构。若是小型站点,建议先保持全放行状态,发现无效抓取或重复页面时再精确添加限制。

需要特别提醒的是,禁止抓取聚合筛选页时,要注意页面依然可能被索引,只是快照内容不完整。此时应配合 noindex 使用,两者并不矛盾:robots.txt 管抓取控制,noindex 管索引控制。改动完成后,利用各搜索引擎站长工具提供的 robots 测试功能,全面检查文件是否被正确解析,要查看抓取时是否会返回 404,尤其是存在于旧版本中的路径变更后,必须确认没有遗留的失效规则阻断新页面。

5. 常见问题

5.1 robots.txt 中可以通过注释解释规则吗?

可以。以井号开头的行会被视为注释,注释可单独成行,也可放在规则行末尾。合理利用注释能帮助团队理解每条规则的意图,尤其是当配置较为复杂时,注释能有效降低后续维护成本。

5.2 修改 robots.txt 后多久能生效?

绝大多数抓取引擎会定期重新获取该文件,通常每隔一天到几天会重新校验一次。若情况紧急,可通过各搜索引擎的站长管理平台手动提交更新或发起抓取请求,这对加速新规则的生效有明显作用。

5.3 个文件可以限制单个蜘蛛的特定目录吗?

完全可以。你可以同时设置多个规则组,分别指定不同的用户代理。例如先定义 User-agent: * 禁止某公共路径,再定义 User-agent: Bingbot 并仅允许该路径或添加额外限制,规则之间彼此独立且可叠加生效。

6. 总结

robots.txt 是一把双刃剑,它既负责引导搜索引擎更高效地发现你的内容,也可能因一个空格或一条路径错误而削弱整站表现。核心要点在于理解其“建议”性质,善用 Allow 与 Disallow 的优先级,谨慎对待通配符,并配合搜索引擎官方的后台工具完成规则生效验证。建议每当你调整站点目录结构或开发完成后,都顺手检查一遍该文件,确保没有历史遗留的过时规则,让爬虫以最低的成本触及最有价值的内容。

图1 图2

nginx