robots.txt 是网站与搜索引擎爬虫之间的沟通桥梁,它决定了哪些页面可以被抓取收录,哪些需要被隔离在索引之外。一份精心设计的 robots.txt 能够引导爬虫高效抓取优质内容,同时保护后台和临时页面不被曝光。但这个看似简单的纯文本文件,实际配置中却常有各种疏漏,一处符号或路径的偏差,就可能让整站的收录节奏被打乱。
robots.txt 的存放位置有严格规定,它必须以全小写的文件名,放置在网站主域的根目录下。如果文件名出现了大小写混用,或者被放置到了子文件夹中,爬虫会直接判定文件不存在,从而默认放行所有内容,之前设定的任何屏蔽规则都会失去作用。
文件内容由若干“规则块”构成。每个规则块开头是 User-agent 行,用来指定适用的爬虫类型,后面跟着具体的禁止或允许指令。多个规则块之间最好用空行隔开,便于阅读和维护。字段名不分大小写,但路径匹配部分通常是区分大小写的,书写时需保持统一。
注释行以 # 号开头,可以单独成行,也可以附加在规则行的末尾。注释能帮助日后维护者快速理解每条规则的意图,且不会对爬虫解析产生任何影响。
User-agent、Disallow 和 Allow 是 robots.txt 的三大基石。User-agent 定义规则适用的对象,Disallow 声明禁止访问的路径,而 Allow 则用于在禁区内为特定子路径打开通道。
想阻止所有搜索引擎抓取全站时,可配置为:
User-agent: *
Disallow: /
只想屏蔽后台管理区域时,写法如下:
User-agent: *
Disallow: /admin/
这里有个常见的陷阱需要特别留意:Disallow 路径末尾的斜杠左右着匹配的边界。/admin/ 只限制 admin 目录本身及其下的子页面;但若漏掉了末尾的斜杠,写成了 /admin,那么所有以 admin 开头的路径都会被纳入屏蔽范围,像 /administrator 或 /admin-area 这类正常页面也会被无辜牵连。
当某个路径同时被 Disallow 和 Allow 规则覆盖时,执行结果并不以书写先后为准,而是依赖一套既定的优先逻辑:若两条规则的路径长度一致,则 Allow 指令胜出;若长度有差异,则匹配路径较长、指向更具体的规则优先生效。
假设既要屏蔽整个博客栏目,又希望放行其中一篇专题文章,可以参考如下组合:
User-agent: *
Disallow: /blog/
Allow: /blog/featured-post/
这种配置下,专题文章可以被正常抓取,而博客中的其他页面都会受到屏蔽限制。需要留意的是,Google 支持这种长路径优先的判定,但其他部分搜索引擎可能不支持 Allow 指令,遇到多搜索引擎需求时需额外测试。
配置 robots.txt 时,有几个容易被忽略的细节值得单独提醒。首先是文件编码,务必使用 UTF-8 无 BOM 格式保存,否则某些爬虫可能无法正确解析内容。其次是通配符的运用, * 可匹配任意字符序列, $ 表示路径末尾,但并非所有搜索引擎都完全支持这套通配语法,使用前建议查阅目标爬虫的官方文档。
另外,Sitemap 声明行也可以放置在 robots.txt 中,形如 Sitemap: 域名/sitemap.xml,这样能帮助爬虫更快发现站点地图,提升新内容的收录效率。但这条指令仅对支持它的搜索引擎有效,且不影响其他规则块的正常解析。
还要定期检查文件的可访问性,尤其要防止爬虫抓取时出现 4xx 或 5xx 错误。一个无法访问的 robots.txt 会被爬虫当作全站放行处理,这可能让本应隔离的敏感目录暴露在搜索结果中。
可以。使用“User-agent: *”配合“Disallow: /”即可对所有主流搜索引擎生效。但需要明确的是,屏蔽抓取不等同于从已有搜索结果中移除页面。如果页面已被收录,还需要通过站点后台的删除工具或 meta noindex 标签来补充处理。
一般来说,搜索引擎会定期重新获取 robots.txt 文件,通常几分钟到几小时不等。如果希望加快生效速度,可以通过搜索引擎的站长平台主动提交新文件的更新请求。在此期间,旧规则可能仍被爬虫缓存使用,变化不会立刻体现在抓取行为上。
并非如此。Allow 指令是 Google 等主流搜索引擎支持的扩展规则,但部分搜索引擎仍只识别 Disallow。如果网站主要面向多搜索引擎,建议在配置完成后,分别用各平台的抓取测试工具验证规则的最终效果,避免出现理解偏差。
robots.txt 配置是一门精细活,从文件的位置、字符集,到路径末尾的斜杠、规则的优先级,每个细节都可能影响爬虫的实际行为。建议遵循以下做法:文件放置于根目录并保持纯文本格式;每一次规则修改后都用浏览器和站长工具双重验证;定期审视文件内容,及时清理过期路径。把这份指南中的要点落实到配置里,就能让爬虫把力气花在真正值得收录的页面上。