站点根目录下的 robots.txt 文件,是运营者写给搜索引擎爬虫的访问说明。它对抓取效率和服务器负载有直接影响,配置不当轻则导致重要页面不被收录,重则让敏感内容暴露在搜索结果中。理解文件语法、掌握常见配置场景并绕开经典误区,是管理好网站抓取秩序的基础。
robots.txt 文件必须放在域名根目录,理论上可通过 https://你的域名/robots.txt 访问。文件本质上是一组按行分隔的文本指令,每条规则都围绕特定的爬虫声明展开,配合允许或禁止的路径规则使用。以井号(#)开头的行是注释,不会参与解析。
最基础的开放配置写法如下:
User-agent: *
Disallow:
Sitemap: https://example.com/sitemap.xml
这里第二行 Disallow 后没有内容,明确传达了允许全站抓取的意图。简洁的规则往往更不容易出错。
实际工作中极少沿用默认配置。根据网站所处阶段和内容结构,灵活组合指令才能让治理有效。以下三个场景覆盖面最广。
网站尚在开发、改版打磨或做上线预演时,不建议让爬虫闯入。配置上把所有路径都纳入禁止范畴是有效做法:
User-agent: *
Disallow: /
这种方式能够阻止绝大多数爬虫抓取。它的局限性也需要知晓:如果 URL 已被搜索引擎收录,单靠这一句并不能让旧链接从结果中消失,需要配合其他移除工具协同处理。
多数网站只希望隔离部分内容,例如后台、用户私密空间或内测专题。若想屏蔽 /admin/ 与 /usercenter/,同时确保 /public/ 可被抓取,写法如下:
User-agent: *
Disallow: /admin/
Disallow: /usercenter/
这段规则故意没有写 Allow 指令。原因是它的生效优先级在多数搜索引擎里并没有统一标准。与其冒险,不如把希望开放的区域保持默认可抓,只列出必须屏蔽的路径。如此既减少解析歧义,又降低规则冲突的隐患。
有时需要做精细化管控,比如给 Googlebot 完全开放的权限,同时对其他蜘蛛收紧边界。通过分段声明即可实现多样化配置:
User-agent: Googlebot
Disallow: /private/
User-agent: *
Disallow: /
需要注意的是,指令匹配遵循最长前缀原则。在路径匹配时,长度更长、更具体的规则优先于宽泛的规则。另外,爬虫的身份依据 UA 字符串确定,个别未知蜘蛛可能忽略规则或伪装身份,这属于现实中的次要风险。
细节决定成败,下面几点常被忽视却对实际效果有重要影响。首先是文件编码与格式,采用纯文本 UTF-8 无 BOM 格式较稳妥,避免中文注释乱码。其次是文件大小限制,目前主流引擎仅解析前 500 KiB 内容,超出部分直接忽略,规则务必精简。另外,allow 与 disallow 规则要遵循特定原则,且对路径的匹配是前缀匹配而非通配符匹配,星号仅在特定引擎中表示任意字符序列。
一个常见误区是很多人认为 Disallow 留空等于禁止一切。实际恰恰相反,Disallow 留空或在文件内不出现该指令,都代表允许访问。另一个易错点是文件名大小写,robots.txt 必须小写,并且必须处于站点根目录,否则搜索引擎将无法识别。
规则不是写完就结束了。上线后的验证步骤不可缺少。最直接的做法是打开搜索引擎后台的抓取工具,输入需要验证的 URL,观察模拟抓取返回的结果是否符合预期。也可以在本机测试,但本地模拟结果和线上真实行为可能有差异,不能完全等同。
判断配置是否成功,重点是观察抓取统计中有无异常:该抓的页面是否有抓取记录,相关目录的抓取请求是否明显减少。服务器日志和后台报表都能提供参考。若两周内未出现预期变化,需要复查文件是否可正常访问、语法是否校验通过。
robots.txt 的功能是阻止未来的抓取,已有的索引需要时间重新爬取才会逐步清理。要让页面快速从索引移除,建议改用搜索引擎官方的移除工具或 noindex 标签,效果更直接。
Disallow 留空表示允许爬虫访问所有路径,相当于放行;而 Disallow: / 表示禁止访问根路径对应的全部内容。二者语义完全相反,使用时务必核对,避免误屏蔽整个站点。
它只能约束遵守协议的主流爬虫。恶意爬虫、采集程序或伪装 UA 的脚本不会理会该文件,涉及机密数据的页面应通过登录验证和网段限制来保护。
合理配置 robots.txt 是站点治理的起点。日常维护中建议先明确业务目标,再对照文件语法和场景方案动手修改;上线前务必用官方工具验证规则效果。拒绝花哨配置,保持指令简洁,持续观察抓取日志数据,有效控制搜索爬虫行为便不再困难。