robots.txt 写法要点与避坑实务指南

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

robots.txt 是站点根目录下的一个纯文本文件,用几行指令告知搜索引擎蜘蛛哪些路径可以抓取,哪些需要绕行。配置得当,抓取预算能集中到核心页面,新内容收录速度也会提升;反之,语法错误或路径误写可能导致整站抓取异常甚至排名受损。下面梳理这套文件的关键语法,并指出实际操作中容易忽略的细节。

1. 明确职责范围:它管抓取,不管收录

这份文件的服务对象是网络爬虫,用户在浏览器地址栏输入“域名/robots.txt”即可直接查看。它的功能相当于路口引导牌,只决定爬虫是否访问某个路径,至于页面最终能否进入搜索引擎索引库,并不由它说了算。若想彻底让某个页面从搜索结果中消失,应当使用 noindex 元标记。举例来说,一个被 robots.txt 屏蔽的页面,如果外部链接众多,搜索引擎仍可能将其收录,只是快照内容可能取自其他渠道。

同时要明白,这份协议依赖爬虫的自律。主流搜索引擎的蜘蛛基本会遵守规则,但不少恶意采集程序并不会理会这些约定。凡是涉及用户隐私、交易记录、后台管理等敏感区域,必须叠加登录验证、IP 白名单或防火墙等防护手段,不能把安全完全寄托在这份“君子协定”上。

2. 语法拆解:字段含义与匹配规则

robots.txt 由若干规则组构成,每个组必须以 User-agent 字段开头。所有字段统一采用“名称: 值”的格式,冒号使用英文半角,冒号后留一个空格是推荐写法。虽然多数爬虫对格式有一定容错度,但规范书写能避免日后出现解析异常。

2.1 User-agent:圈定规则的适用对象

该行声明当前规则组针对哪类爬虫生效。若只想约束谷歌的搜索蜘蛛,写 User-agent: Googlebot;若想让所有搜索引擎爬虫统一遵守,用通配符 User-agent: * 即可。你可以建立多个规则组,对不同爬虫实施差异化策略,例如对谷歌放宽权限,同时收紧对必应的限制。

2.2 Allow 与 Disallow:成对出现的权限开关

Disallow 声明禁止访问的路径,Allow 声明允许访问的路径,两者通常搭配使用。一个易被忽略的点:当 Disallow 后面留空且无值,代表清除所有限制,爬虫可抓取全站任意内容。当同一 URL 命中多条规则时,搜索引擎默认遵循“最长匹配优先”原则——路径越具体,优先级越高。比如同时写 Disallow: /api/ 和 Allow: /api/public/,因为后者更具体,public 子目录下的内容会被放行。

2.3 辅助指令:Sitemap 与 Crawl-delay

Sitemap 指令用于声明站点地图的完整 URL,方便爬虫快速定位全站内容,通常置于文件末尾。Crawl-delay 用于设定爬虫抓取的间隔时间,单位是秒。特别留意,谷歌爬虫不认可这一指令,它更建议通过 Search Console 后台的抓取频率设置来调节节奏。

3. 易踩的坑:路径、通配符与大小写

第一个高频问题出在路径理解上。Disallow: /private 会匹配所有以 /private 开头的路径,包括 /private.html 和 /private/,而 Disallow: /private/ 只匹配目录下的内容。若想精确屏蔽某个文件,应写完整路径,如 Disallow: /private/config.php。

第二个常见错误是通配符误用。标准语法仅支持 * 表示任意字符序列,$ 表示匹配结尾,但部分爬虫对这两者的支持并不一致。为避免解析差异,建议尽量使用明确的前缀路径,而非依赖通配符。

第三个问题是大小写敏感。爬虫对路径的匹配通常区分大小写,/IMG/ 与 /img/ 是不同路径。配置时需与服务器上实际目录名称逐一比对,避免因大小写偏差导致规则失效。

第四个坑是根目录路径写错。robots.txt 必须放在域名根目录下,且文件名不可改动。放在子目录或改名都无法生效。另外,文件编码建议使用 UTF-8,避免中文注释引发乱码导致解析中断。

4. 验证与维护:上线前查漏,更新后复检

修改 robots.txt 后,不要直接依赖肉眼检查。主流搜索引擎均提供了官方校验工具,例如谷歌的 Robots 测试工具、百度搜索资源的抓取诊断功能。将文件内容粘贴进去,输入测试 URL,即可看到该链接被允许还是禁止抓取,并显示具体命中的规则行。

建议每次调整后按以下步骤操作:先在本地用文本编辑器确认格式无误,再上传至根目录覆盖旧文件,随后通过工具逐一验证核心页面的抓取状态。若发现意外屏蔽,可即时回滚到上一版本。

注意定期复查这份文件,尤其是站点结构改版后。旧的 Disallow 规则可能已不适用,新目录也可能被误伤。建立一个简单的检查表格,记录每条规则的意图、对应目录和最后修改日期,能显著降低维护成本。

5. 常见问题

5.1 robots.txt 能否阻止搜索引擎收录我的页面

不能直接阻止。该文件只能阻止爬虫抓取,无法控制页面是否进入索引库。若页面已被收录,仅靠 robots.txt 屏蔽无法移除,需结合 noindex 标签或通过搜索引擎的删除工具处理。

5.2 Disallow 和 Allow 的优先级如何判断

当同一 URL 同时匹配多条规则时,以最长的匹配路径为准。例如 Disallow: /shop/ 与 Allow: /shop/clearance/ 同时存在时,clearance 子目录下的页面会被允许抓取。不同搜索引擎对同等长度规则的处理略有差异,建议避免编写重复长度的冲突规则。

5.3 robots.txt 文件能否为空或省略

可以。若文件为空或不存在,相当于允许爬虫抓取全站所有公开页面。对多数中小站点而言,在无特殊需求时,不放置该文件或留空都是合理选择,不必为了存在而添加无意义的规则。

6. 总结

配置 robots.txt 的核心在于清晰表达意图:用 User-agent 圈定对象,用 Allow 和 Disallow 控制路径,再辅以 Sitemap 声明加速发现。书写时注意路径大小写、通配符兼容性及文件位置,上线前借助官方工具验证。记住它的能力边界是抓取而非收录,敏感内容务必叠加其他安全措施。每季度或大版本更新后复查一遍,即可让这份小文件持续发挥应有的作用。

图1 图2

nginx