Robots.txt 是一个位于网站根目录的纯文本文件,用于向搜索引擎爬虫说明站点中哪些区域可以访问、哪些区域应被忽略。它并非强制性的安全屏障,而是一种行业协作规范。正确设置该文件,能够让爬虫将有限的抓取配额集中于优质内容,同时减轻源站服务器的无效请求压力。
当爬虫准备抓取你的站点时,首要动作便是向域名根路径发起请求,获取 /robots.txt 文件。一旦该文件存在且爬虫遵守规范,它会依据文件内的指令划定本次抓取的边界;若文件不存在,绝大多数爬虫会默认允许访问所有公开页面。
在实际操作中,该文件最常见的用途包括:屏蔽后台管理目录、阻止搜索筛选参数页面被收录、降低对低价值页面的抓取频率以节约系统资源。需要特别强调的是,这套机制只对遵守规范的搜索引擎有效,恶意采集程序通常会无视这些规则,因此切勿依赖它保护敏感数据。
一份完整的 Robots.txt 由若干条记录组成,每条记录以 User-agent 行开头,其后跟随具体指令。以下五个指令是配置时的核心基础:
参照下方写法,规则逻辑一目了然,日后维护也更为便捷:
User-agent: *
Disallow: /temp/
Disallow: /internal/
Allow: /internal/whitelist.html
Sitemap: https://www.example.com/sitemap.xml
上述配置的实际效果为:所有合规爬虫均无法抓取 temp 和 internal 两个目录,但 internal 目录内的 whitelist.html 作为例外被明确放行,同时文件末尾提供了站点地图的位置。
虽然配置过程看似简洁,但一些细节疏忽往往会令预期效果大打折扣。以下几个高频场景值得重点关注:
避坑提示:路径匹配遵循前缀原则,Disallow: /news 会一并阻止 /newsletter 这类路径的抓取,若希望精确控制,应在末尾加上斜杠写成 /news/。
此外,同一路径出现多条规则时,遵循最短匹配优先原则;若长度一致,则以 Allow 为准。修改文件后,建议使用搜索引擎提供的抓取诊断工具验证实际效果,而不是仅凭肉眼检查语法。
除了基础规则,合理运用通配符与特殊字符能显著提升规则表达的简洁度。美元符号 $ 可用于匹配路径结尾,例如 Disallow: /*.pdf$ 表示禁止抓取所有 PDF 文件。星号 * 则代表任意长度的字符序列,能够简化对动态 URL 的参数过滤规则。
值得注意的是,Robots.txt 文件的体积应控制在合理范围内,过长的规则列表不仅增加解析时间,也可能因误匹配而导致正常页面被屏蔽。尽量保持规则的精简,仅对确实无需收录的路径添加限制。同时,文件编码必须为 UTF-8(无 BOM),部分爬虫对非标准编码的兼容性不佳,可能引发规则解析异常。
两者属于不同层级的控制手段。Robots.txt 从抓取层面阻止爬虫访问页面,而 meta robots 标签在页面已被抓取后生效,控制是否索引或是否跟踪链接。若 Robots.txt 禁止了抓取,爬虫将无法读取页面内的 meta 标签信息,因此前者对于拦截请求更为彻底。
不会立刻消失。搜索引擎的抓取与索引是周期性过程,新规则需要爬虫下一次访问时才会生效。已收录页面可能继续在搜索结果中存在一段时间,必须等爬虫重新抓取并遵守最新规则后,页面才会逐步从索引中移除。
绝对不可以。该文件仅对遵守规范的爬虫起到建议作用,恶意程序和不法分子可轻易绕过。保护机密数据应当依赖服务器端的身份验证和访问权限控制,而非依赖 Robots.txt 这类协作约定。
Robots.txt 是管理搜索引擎抓取行为的高效工具,掌握其核心语法与匹配逻辑至关重要。建议你在每次调整后,均通过官方工具测试规则的可行性,并定期审查文件内容,确保其与网站结构同步更新。请始终记住:该协议是给善意爬虫的指引,绝非数据安全的保障措施。