robots.txt是部署在站点根目录的纯文本文件,本质是一封写给搜索引擎爬虫的访问告知信,用于声明哪些目录或文件允许被抓取、哪些需要绕行。配置得当,爬虫能把有限的抓取预算花在关键页面上,加速新内容的收录;配置失误,轻则导致部分页面无法被索引,重则可能波及整站抓取效率。理解其语法构成和常见误区,是站点运营人员不可或缺的基础功。
robots.txt并不具备强制约束力,它更像一份面向所有网络访客公开的"参观路线图"。任何人都能在浏览器中输入"你的域名/robots.txt"直接浏览文件内容。它只能约束哪些爬虫请求会被发出,却无法阻止任何人的直接访问,更不能替代真正的安全防护。
需要特别留意的是,屏蔽抓取不等于屏蔽收录。假设某个URL被Disallow规则排除,但站外存在大量指向它的外链,搜索引擎依然可能将这个页面收录进索引,只不过展示的可能是摘要片段或缓存快照。此外,这份文件依赖爬虫的自觉遵守。主流搜索引擎的蜘蛛大多会遵循规则,但各类采集程序、恶意爬虫基本无视其存在。凡是涉及后台管理、用户隐私、支付回调等敏感路径,必须另行配置登录验证、IP白名单或防火墙等硬性拦截措施,切不可将安全寄托在只具建议性质的协议上。
robots.txt由若干规则组构成,每组以User-agent行起始,声明该组规则的适用对象。所有指令统一采用"字段: 值"的格式,冒号需为英文半角,且建议在冒号后保留一个空格。虽然多数爬虫对格式有一定容错能力,但养成规范书写习惯能避免后续解析隐患。
该字段决定整组规则的约束对象。若只针对谷歌蜘蛛,写作User-agent: Googlebot;若希望覆盖所有搜索引擎,则使用通配符User-agent: *。通过编排多个规则组,可以实现精细的差异化策略,例如对谷歌开放全站抓取,同时对必应设置抓取限制,从而灵活管理不同爬虫的访问行为。
Disallow用于声明禁止访问的路径前缀,Allow则用于声明允许访问的路径,二者常搭配出现。这里有一个高频误区:当Disallow后不填写任何路径值,即"Disallow:"留空时,表示清空所有限制,爬虫可抓取全站。当某条URL同时匹配多条规则时,搜索引擎普遍遵循"最长匹配优先"原则——路径匹配长度越长,规则优先级越高。例如同时存在Disallow: /api/ 与 Allow: /api/public/ 两条规则,由于后者匹配路径更长,因此public子目录下的内容会被放行抓取。
Sitemap指令用于声明站点地图的完整URL,有助于爬虫迅速摸清站点结构,通常置于文件末尾。Crawl-delay指令用于设定爬虫连续两次抓取的间隔秒数,以缓解服务器压力。但需注意:谷歌爬虫并不解析Crawl-delay,其抓取频率由自身算法动态决定。若期望通过该指令调控谷歌的抓取节奏,效果通常无法达成。
robots.txt语法体系并不庞杂,但许多站点恰恰在细节上出现疏漏。以下三类错误尤其常见,值得逐一对照检查。
冒号后误加多余空格、路径使用反斜杠、混入中文全角标点,这些细微差错均可能导致规则被忽略或解析失败。建议在写完规则后,通过实时校验工具或搜索引擎的抓取测试功能进行验证,确认每一条规则均按预期生效,避免"看似写了实则无效"的状况。
robots.txt仅支持有限的两个通配符:星号*代表任意字符序列,美元符$代表URL结尾。它不支持完整的正则表达式语法。不少运营者习惯于正则写法,试图表达复杂逻辑,结果导致整条规则失效。务必克制使用高级匹配的冲动,尽量以简洁的静态路径作为规则主体。
一个常见的危险操作是将页面URL直接写入Disallow字段,例如Disallow: /login,这会直接阻断该页面的全部抓取。更稳妥的做法是,仅在确有必要时屏蔽整个目录或文件类型。另外,若站点URL包含中文,文件编码必须统一为UTF-8,否则爬虫可能因乱码而无法匹配路径,导致规则形同虚设。
编写robots.txt建议遵循"最小必要"原则:仅屏蔽确实无需抓取的路径,如后台目录、重复筛选参数、购物车页面等。以下是一套可复用的撰写流程:
需特别警惕的是,不要试图通过robots.txt隐藏敏感页面,任何有价值的私密内容都应置于鉴权体系之后。同时,建议在规则中明确屏蔽明显恶意的采集UA标识,以降低服务器无谓开销。
通常搜索引擎会周期性重新抓取robots.txt文件,生效时间从几小时到数天不等。若需加快,可登录搜索引擎的站长平台提交更新请求,或使用其在线抓取测试工具触发重新获取。但请注意,已收录页面的排名变化不会因修改文件而立即发生。
会。屏蔽目录后,爬虫将停止抓取该目录下的URL,已收录页面的内容更新会停滞,但不会必然导致页面被移除索引。若页面存在大量外链,仍可能保留在索引中。若想彻底移除页面,应使用meta robots标签或返回410状态码,而非仅依赖robots.txt。
可以。通过编写多个规则组,分别指定不同的User-agent即可实现差异化策略。例如可对Googlebot放开图片目录,对Bingbot屏蔽该目录。但需注意,每个爬虫只会匹配其对应UA的规则组,若存在通配符规则组,则其余爬虫将遵循通配符组的设定。
robots.txt是站点与搜索引擎爬虫沟通的第一道环节,正确配置能显著提升抓取效率,但切勿将其视为安全屏障。建议从基础语法入手,严格遵守最长匹配原则,避免使用非标准通配符。完成配置后务必通过测试工具验证效果,并建立定期复查机制。将敏感内容置于鉴权保护之下,才能真正实现抓取可控与站点安全兼得。