robots.txt 是每个依赖自然搜索流量的网站都绕不开的小文件。它通过简单的几行指令,就能影响搜索引擎爬虫的抓取路径,从而间接决定网站内容的收录效率。配置得当,它可以引导爬虫将有限的抓取预算用在刀刃上;配置失误,则可能让整站陷入不被收录的困境。本文围绕这个文件的语法结构、匹配逻辑以及高频出现的配置陷阱展开说明,帮助你避开常见的坑。
这个文件本质上是一份面向网络爬虫的公开声明,放置在网站根目录下,用于告知对方哪些路径允许访问、哪些路径应当避开。它依靠的是业界普遍认可的合作精神,并非带有强制力的安全防护手段。主流搜索引擎的爬虫在抓取时大多会先读取该文件,并遵循其中的约定。
它的实际价值通常体现在三个场景:其一,将管理后台、临时测试目录等不希望被外部索引的区域隔离开;其二,减少因 URL 携带大量追踪参数而产生的重复内容抓取;其三,在文件内部直接声明 Sitemap 的位置,加快新页面被发现的节奏。
需要特别警惕的是,该文件对任何访客都是公开可读的。因此,涉及登录凭证、用户隐私数据或内部接口的链接,绝不能寄希望于这类文件来隐藏,这些信息必须交给服务器端的身份验证或访问控制列表来处理。
文件的书写格式简洁明了,以“字段名: 值”的形式逐行排列。字段名不区分大小写,但所填写的路径字符则是严格区分大小写的。掌握下面几个核心字段,就能应对绝大多数站点的配置需求。
假设站点存在一个仅供内部使用的 /admin/ 路径,但该路径下有一个需要被搜索收录的公开说明页,同时需要提交站点地图。配置逻辑可以这样组织:
User-agent: *
Disallow: /admin/
Allow: /admin/notice.html
Sitemap: https://www.example.com/sitemap.xml
这段配置传递了三个信息:默认拦截所有爬虫对 admin 目录的访问;notice.html 页面作为特例允许抓取;最后附上全站地图的定位。
在编写规则时,理解爬虫对路径的匹配方式可以避免许多困惑。最长的匹配规则拥有最高优先级,这一原则在多数主流搜索引擎中通用。例如,若同时存在 Disallow: /api 和 Disallow: /api/v1,那么针对更具体的后者,爬虫会优先遵循。
在最长匹配规则一致的情况下,Allow 指令的优先级要高于 Disallow 指令。这意味着你可以放心地通过 Allow 为某个具体文件或子目录开一个口子,而不必担心被同级的 Disallow 规则覆盖。
此外,这条匹配是基于 URL 字符串的前缀比对,而非通配符的文件名匹配。使用星号(*)匹配任意字符、使用美元符号($)匹配结尾,这些特殊的正则符号并非所有爬虫都支持,编写时需先查阅目标搜索引擎的官方说明。
实际运维中,许多站点并非栽在语法错误上,而是败给了逻辑误区。下面列举几种高频出现的失误类型及对应的规避做法。
有些站点为了阻止抓取未收录的栏目,直接写下了 Disallow: /。这是一种极为冒险的做法,稍有不慎就会导致全站失去索引资格。如果确有需要封锁特定目录,建议单独列出路径,切勿使用根路径的写法。
robots.txt 控制的是“是否允许抓取”,而页面中的 noindex 标签控制的是“是否允许索引”。若文件只是禁止抓取某个页面,但该页面已被其他来源抓取过,依旧有可能进入索引库。反之,若只放 noindex 标签而未在文件中放行抓取,则爬虫根本无法读取标签指令。两者需要协同使用,才能达到预期效果。
许多电商站点的 URL 带有排序、筛选等跟踪参数,为了避免重复内容而全部封禁。这往往会导致重要参数组合页面失去收录机会。更合理的做法是区分对待:对会产生实质内容变化的参数放行,对纯粹的追踪型参数进行封锁。
生效时间没有固定标准,通常取决于爬虫重新抓取该文件的频率,短则几小时,长则数天。若希望尽快看到效果,可以通过搜索引擎站长平台主动提交该文件进行更新验证。
在匹配长度相等的前提下,Allow 指令的优先级更高。这一规则常用于解除对特定子目录或文件的封锁,只要所写的具体路径长度不短于 Disallow 的路径即可生效。
谷歌手动抓取工具已明确不再支持该字段,其抓取频率主要由服务器响应速度决定。如果主要流量来源是谷歌,不建议依赖此字段控制服务器压力,而应通过优化响应时间和提升带宽来改善抓取体验。
robots.txt 是一个依靠细节制胜的配置文件。建议在每次修改后,先用各搜索引擎提供的检测工具进行实际验证,再观察日志中爬虫的抓取频次变化。务必养成备份原文件的习惯,便于在出现误封时迅速回滚。将规则简化,把放行的路径写得比封禁的路径更具体,就能让这个文件真正为站点服务,而非成为收录的绊脚石。