robots.txt 是网站与搜索引擎爬虫之间的一份简单契约,用来告知哪些页面允许被抓取、哪些部分应当屏蔽。配置得当,可以节省服务器资源、防止后台内容出现在搜索结果中;配置失误,轻则规则被忽略,重则整站失去收录。这篇指南将梳理从文件放置到规则语法的完整流程,并剖析那些容易踩中的细节陷阱。
首先要确保爬虫能够顺利找到这个文件。robots.txt 必须使用全小写英文字母命名,并且只能放置在域名根目录,也就是通过 https://你的域名/robots.txt 这样的地址可以访问到。文件一旦放错目录,或名称里出现了大写字母,爬虫就会认为文件不存在,此时所有屏蔽规则都等于白写,网站内容会被默认全部放开抓取。
文件内部以“规则块”为单位组织内容,每个块以 User-agent 开头,下面跟着若干条具体声明,块与块之间用空行分隔,保持可读性。字段名称如 User-agent、Disallow 等不区分大小写,但路径部分通常区分大小写,日常书写时应保持统一的风格。
使用 # 符号可以添加注释,既能单独成行,也可以放在规则语句的末尾。注释不影响任何抓取判定,但能帮助团队成员快速理解每条规则设立的缘由,避免日后误删或改错。
验证方法并不复杂:直接在浏览器里打开 域名/robots.txt,如果能看到纯文本内容就说明位置正确。另外,有几个容易忽略的细节:一是每个子域名都要在自身根目录放置一份独立文件,根域与子域互不通用;二是确保服务器的访问策略没有拦截这个文件,否则爬虫仍然可能抓取失败。
构成 robots.txt 的基本元素有三个:User-agent 指定规则的适用对象,Disallow 声明禁止抓取的路径,而 Allow 则用于在禁区内单独放行某个地址。灵活组合这三者,基本能应对绝大多数需求。
例如,想要封锁全站内容,可以这样写:
User-agent: *
Disallow: /
如果只想屏蔽后台目录,写法如下:
User-agent: *
Disallow: /admin/
这里埋着一个高频失误点:Disallow 末尾是否带斜杠,匹配的范围截然不同。/admin/ 只会限制 admin 这个目录以及它下面的所有子页面;如果漏掉了末尾斜杠,写成 /admin,那么所有以此前缀开头的路径都会被屏蔽,像是 /administrator、/admin-center 这类地址也会中招,可能导致一批正常页面莫名失去收录。
当同一个地址同时被 Allow 和 Disallow 两条规则命中,并不会按照书写的前后顺序来决定结果。真正的判定逻辑是:如果两条规则的路径长度完全一致,则 Allow 规则优先;如果路径长度不同,那么更长、更具体的规则优先。
以实际场景为例,假设要屏蔽整个博客栏目,但其中某个专题页面需要正常收录,应按下面方式配置:
User-agent: *
Disallow: /blog/
Allow: /blog/featured-post/
这样的写法可以确保专题页被放行,而博客栏目内其余内容继续保持屏蔽状态。开始配置之前,最好先把所有需要限制的路径一一列出来,推演每一条规则之间是否存在交叉覆盖,提前发现可能出现的意外放行或误屏蔽情况。
在文件末尾追加一行 Sitemap 声明(Sitemap: https://你的域名/sitemap.xml),可以向爬虫主动提供站点地图的准确位置,有助于加快新页面的发现速度。这项声明不隶属于任何 User-agent 规则块,单独成行即可。
实践中有几个盲点值得留意。其一,所有 Disallow 规则都只对当前这个文件所在的域名有效,不会跨域生效;其二,规则中所写的路径对爬虫而言是相对地址,不要拼上完整的协议和域名,例如写成 Disallow: /private/ 是正确的,写成完整网址反而会造成匹配异常;其三,robots.txt 只起到提示作用,并非强制执行的屏障,真正需要保护的数据绝不能只依赖它,必须配合登录验证等机制。
搜索引擎爬虫发现并读取到新的 robots.txt 通常需要一定时间间隔,少则几小时,多则数天。规则发生变化后,无法强制爬虫立即刷新,但可以尝试在搜索引擎的站长工具站点内提交该文件,以加快处理速度。
可以,但意义有限。Allow 的主要用途是在已经被 Disallow 覆盖的范围内单独开放某些路径。如果网站没有任何屏蔽需求,单独使用 Allow 并不会带来实质性的增益,反而会增加规则的维护复杂度。
最长的匹配规则获胜,亦即爬虫会选择表述最具体的那一个 User-agent 块来执行。因此不建议书写多个名称相近、意图含混的规则块,保持每组只针对一个明确的爬虫对象,能有效减少匹配混乱。
robots.txt 虽然只是一个小文本文件,但想让爬虫准确理解你的意图,需要从文件位置、斜杠细节、匹配优先级到 Sitemap 声明逐项把关。建议每完成一次修改,先在浏览器中确认能正常访问,再梳理一遍规则有无重叠或歧义。后续若调整了站点结构,也应同步回查该文件,并及时利用站长工具观察抓取和收录数据的变化,以便尽早纠正配置偏差。