robots.txt 是放在网站根目录下的一个文本文件,它通过约定俗成的协议向搜索引擎爬虫说明哪些内容可以抓取、哪些需要绕过。配置得当能显著提升抓取效率,帮助新页面更快被发现;配置出错则可能导致重要页面未被收录或服务器资源被浪费。理解它的语法边界和常见误区,是站点运营的必修课。
robots.txt 的作用对象是遵守规范的正规搜索引擎爬虫,例如百度、谷歌等主流搜索引擎的蜘蛛会遵循其中的规则。它并不具备强制性,也不能作为安全工具使用。恶意爬虫或不遵守协议的采集程序完全无视该文件,因此涉及用户数据、支付接口或后台登录的敏感目录,必须通过身份验证、防火墙等手段进行访问控制。
另一个容易混淆的概念是“禁止抓取”与“禁止索引”。robots.txt 中设置 Disallow 只能阻止爬虫抓取该路径,但并不会拦截页面被索引。若想彻底杜绝某页面出现在搜索结果中,应在页面 HTML 的 head 区域添加 noindex 标签。两者功能独立,需要根据目标选择正确的配置方式。
robots.txt 由若干规则组构成,每个规则组以一条 User-agent 指令开头,其后跟随若干条具体规则。每行格式为“字段: 值”,冒号后建议保留一个空格,字段名统一使用小写字母,以保障兼容性。
User-agent 字段定义该规则组的作用对象。例如 User-agent: Baiduspider 仅对百度爬虫生效,User-agent: * 则适用于所有未在文件中单独定义的爬虫。可以在同一文件中分别设置不同爬虫的规则组,实现对抓取策略的精细调度。
Disallow 用于禁止抓取,Allow 用于允许抓取。若某条 Disallow 后未填写任何路径,表示允许爬虫抓取全站。当同一条路径同时命中 Allow 和 Disallow 规则时,搜索引擎遵循“最长匹配优先”原则。举例来说,若文件同时包含 Disallow: /static/ 和 Allow: /static/css/,那么位于 /static/css/ 下的资源是可以被正常抓取的。
Sitemap 字段用于直接指定站点地图文件的完整地址,便于爬虫快速发现新内容,缩短探测周期。Crawl-delay 字段则用于规定爬虫连续两次抓取之间的等待秒数,对服务器性能有限的站点较为友好。但需注意,并非所有搜索引擎都支持 Crawl-delay 参数,部分爬虫会直接忽略该字段,不能将它作为控制抓取频率的唯一手段。
面对不同站点结构与运营需求,以下三种配置思路具有较强的通用性,可直接参照调整:
配置错误的代价往往不是立刻显现的,以下几类问题需要特别留意:
不能直接实现。它只能阻止爬虫的抓取行为,页面仍可能通过其他链接被发现并建立索引。如需彻底屏蔽索引,应使用 noindex 标签或设置密码保护。
没有统一的时间周期。搜索引擎通常会在下一次抓取时读取更新后的文件,短则数小时,长则数天。建议修改后通过站点后台的抓取测试工具提交,并观察数据变化。
严格受限。规范建议文件体积不超过 500KB,且尽可能精简规则数量。过大的文件会拖慢爬虫解析速度,并可能引发部分爬虫放弃读取。
robots.txt 的核心价值在于引导爬虫高效利用抓取配额,而非构建拦截防线。建议每隔数月审查一次文件内容,结合站点日志与收录数据,及时清理失效的规则并补充新路径,让爬虫始终按照预期工作。若站点规模较大,不妨先在测试环境中验证配置效果,再应用到线上环境。