robots.txt 全攻略:语法要点与避坑技巧

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

任何一个网站运营者都会在根目录下遇到 robots.txt 这个文件。它用几行简短的指令告诉搜索引擎蜘蛛,站内哪些区域欢迎抓取,哪些地方应该绕行。配置得当,搜索引擎会把有限的抓取资源集中在重要页面上,新内容被收录的速度也会加快;但一旦语法有误或路径写错,整站可能被降权甚至从索引中移除。下面我们系统地拆解这份文件的关键语法,并指出那些容易被忽略的陷阱。

1. 明确职责边界:管得住抓取,管不了收录

这份文件的服务对象是爬虫,你在浏览器里访问“域名/robots.txt”就能看到它的内容。它的本质是一个向导,负责告诉蜘蛛哪条路能走,但页面最终能否进入搜索引擎的索引库,决定权并不在它手上。如果目标是让某个页面彻底从搜索结果里消失,正确的做法是使用 noindex 元标签。robots.txt 只影响蜘蛛是否来抓取,对已经抓过的页面是否被收录无能为力。举一个典型的例子:某个页面在 robots.txt 中被屏蔽,但如果它被大量外部链接指向,搜索引擎依然可能将其收录,只是快照内容可能来自其他渠道。

还需要特别留意的是,这份协议完全依靠爬虫自觉遵守。主流搜索引擎的蜘蛛通常都会守规矩,但许多恶意采集程序和第三方抓取工具根本不会理会这些规则。凡是涉及用户隐私、交易订单、后台管理等敏感路径,必须叠加登录鉴权、IP 白名单或防火墙等额外防护,不能把安全寄托在这样一份“君子约定”上面。

2. 语法全解:字段含义与匹配逻辑

robots.txt 由若干规则组构成,每组必须以 User-agent 字段作为开头。所有字段统一采用“名称: 值”的格式,冒号必须是英文半角,冒号后跟一个空格是推荐写法。虽然多数爬虫对格式有较高的容忍度,但按规范书写能防止未来出现难以排查的解析异常。

2.1 User-agent:划定规则的作用对象

这一行声明当前规则组针对哪种爬虫生效。如果只想约束谷歌的搜索蜘蛛,写上 User-agent: Googlebot;如果希望所有搜索引擎的爬虫都遵守,则用通配符 User-agent: *。你可以建立多个规则组,针对不同爬虫做差异化配置,例如对谷歌放宽访问权限,同时对必应收紧限制。

2.2 Allow 与 Disallow:一放一收的权限开关

Disallow 声明禁止访问的路径,Allow 声明允许访问的路径,二者通常成对出现。很容易被忽略的细节是:当 Disallow 后面留空(即 Disallow: 且无任何值),表示的是一切限制解除,蜘蛛可以抓取全站任意内容。当同一个 URL 同时命中多条规则时,搜索引擎默认采用“最长匹配优先”原则——路径越长越具体,优先级越高。比如同时写了 Disallow: /api/ 和 Allow: /api/public/,因为后者路径更长,所以 public 子目录下的资源会被放行。

2.3 辅助指令:Sitemap 与 Crawl-delay

Sitemap 指令用来声明站点地图的完整 URL,方便蜘蛛快速了解全站内容结构,通常放在配置文件末尾。Crawl-delay 用于设定爬虫两次抓取之间的间隔时间,单位是秒。需要特别提醒的是,谷歌的蜘蛛不认这条指令,它更推荐到 Search Console 后台调整抓取频率。

3. 常见陷阱:路径、通配符与大小写

第一个高发问题出在路径的理解上。Disallow: /admin 会同时屏蔽 /admin 和 /admin/login 这类以 admin 开头的所有路径,但如果写成 Disallow: admin(少了开头的斜杠),则可能匹配到层级更深的路径,例如 /public/admin,行为会超出预期。第二个陷阱是通配符的使用。标准语法只支持 * 和 $ 两个特殊符号,* 代表任意长度的任意字符,$ 代表路径结束位置。不少人在规则里混用了 ? 或正则表达式符号,这些在标准解析中不会被识别,规则可能直接失效。第三个陷阱是大小写敏感问题。robots.txt 的路径匹配区分大小写,/Images/ 和 /images/ 是两个完全不同的路径。建议在配置前先核对目录的真实命名,避免出现规则写了却不生效的尴尬局面。

4. 配置后的验证与维护

文件配置完成后并非万事大吉。建议在根目录下直接访问该文件,检查内容是否正常输出,有无多余的空格或换行。各大搜索引擎都提供了站长工具,例如谷歌的 Search Console 里有 robots.txt 测试器,可以模拟真实蜘蛛的抓取行为,检测出被意外屏蔽的页面。在日常运维中,每次改版或迁移目录后都必须重新审视这份文件,确认旧路径的屏蔽规则是否还适用。另外,文件体积不应过大,控制在小规模规则数量内有助于爬虫快速解析。最后强调一点:部署新文件后,搜索引擎的抓取不会立刻变化,给爬虫一定的重新抓取时间,不要因为短时间没有效果就反复修改。

5. 常见问题

5.1 robots.txt 文件必须放在网站根目录吗?

是的。搜索引擎只会去站点根目录寻找名为 robots.txt 的文件,放在任何一个子目录中都不会被识别。同时要确保文件名完全小写,后缀为 .txt,不要写成 Robots.TXT 或其他变体。

5.2 写了 Disallow 就一定能阻止页面被收录吗?

不能完全保证。Disallow 只阻止爬虫抓取,并不等同于阻止收录。如果页面已被其他来源引用或此前已被抓取,它仍可能出现在搜索结果中。要彻底移除页面,应使用 noindex 标签,并配合抓取工具的删除请求。

5.3 个文件中可以同时写多个 User-agent 规则组吗?

可以。你可以在同一个文件中创建多个规则组,分别针对不同的爬虫设置不同的访问策略。但要注意每组之间用空行分隔,且每个 User-agent 必须单独成组,不能在同一组内混排多个用户代理名称。

6. 结语

robots.txt 是网站与搜索引擎交互的重要入口,配置得当能有效提升抓取效率,配置失误则可能带来不小的损失。动手前先梳理清楚站点的目录结构,明确哪些路径需要保护、哪些可以放开;写完后用站长工具逐一验证,再定期回看。将这份文件当成一项需要持续维护的基础配置,而不是设置一次就束之高阁。保持规则简洁、路径准确、格式规范,搜索引擎的蜘蛛就能高效地为你服务。

图1 图2

nginx