robots.txt 是网站根目录下一个纯文本协议文件,用来说明爬虫能访问站内哪些内容、避开哪些内容。配置得当能引导搜索引擎优先抓取核心页面,防止后台目录或临时链接进入搜索结果;配置错误则可能造成整站不被收录。掌握它的核心语法和典型误区,就能安全有效地管理抓取策略。
robots.txt 的角色是向爬虫提供的抓取许可声明,业界主流搜索引擎普遍遵守其中规则,但它不具法律强制力,也无法替代访问控制。合理配置能带来三个实际好处:屏蔽 /admin/、/tmp/ 等不需展示的目录;阻止爬虫抓取大量带查询参数的动态地址,节省服务器资源和抓取配额;通过在其中声明 Sitemap 绝对路径,加快新页面的发现速度。
务必牢记 robots.txt 对所有人公开可见,任何人输入域名加 /robots.txt 就能查看全部内容。涉及隐私数据、后台接口或商业机密的内容,绝不能仅依赖此文件隐藏,必须配合登录授权、防火墙策略或 IP 白名单等机制。
基础格式采用“字段名: 值”的排列,每行写一条规则。字段名称不区分大小写,但其中的路径部分区分大小写。熟悉下面五个字段,足以覆盖绝大多数实际配置场景。
假设站点存在内部管理目录 /manage/,期望阻止爬虫抓取其中大部分内容,但允许其中一条说明文件 /manage/notice.html 被索引,并向爬虫声明地图文件位置,参考写法如下:
User-agent: *
Disallow: /manage/
Allow: /manage/notice.html
Sitemap: https://www.example.com/sitemap.xml
这段代码传达三层规则:默认拒绝访问 manage 目录;单独放行 notice.html;最后告知地图位置。写完后务必检查每行标签语法和顺序。
路径匹配遵循最长匹配原则:当允许与禁止规则同时命中同一路径时,前缀更长且更具体的那条规则优先生效。上面示例中,/manage/ 前缀较长,而 /manage/notice.html 前缀更长,因此该文件被允许、其余被拒。
同时需留意通配符的兼容差异:Google 和 Bing 认可 * 与 $($ 表示路径结尾),而许多其他引擎不完全支持。为保证跨引擎一致性,建议多采用明确的全路径写法,不依赖 $ 符号做结尾匹配,避免某些爬虫忽略规则造成误抓。
判断规则是否生效的方法很简单:先在浏览器中访问对应路径确认可直接打开,再查看页面 meta robots 是否含 noindex;若同时存在,则说明 robots.txt 仅控制抓取,索引层面还需要其他控制。常见错误是只用 robots 控制却不检查页面个体标签,反而导致抓取被截断、索引迟迟不更新。
robots.txt 经常出现三处高风险错误:一是误写 Disallow: / 将所有页面整体关闭,通常发生在调试过程中未及时移除;二是空行或字段前后多余空格造成解析失败;三是路径大小写不一致,导致意在屏蔽的目录仍被收录。
上线前的核查清单建议包括:确认文件存放在域名根目录且文件名拼写正确;用浏览器访问可见内容并按引擎官方工具(如 Google 的抓取测试页面)验证;确认 Sitemap 地址与实际可访问地址一致;为近期新增子路径单独确认 Allow/Disallow 是否彼此冲突。若执行变更,注意各引擎缓存规则需要时间生效,通常数小时至一天,变更后不必反复催促。
不能。页面地址若被外部链接或历史快照记录,仍可能在其他渠道出现或被展示标题摘要。robots.txt 主要负责控制抓取行为,若需要彻底从索引中移除,应配合页面上的 noindex 标签或提交删除请求。
不完全有效。Google 官方已明确表示不再支持 crawl-delay 指令,其他部分引擎仍会识别它。若服务器压力过大,更可靠的手段是依靠搜索引擎后台的抓取速率设置或服务器层面的限流策略。
可以,建议按爬虫身份分组书写,每组以 user-agent 开头并包含对应的规则,组与组之间用空行分隔。注意每条规则只会归属到最近的 user-agent 组,不要跨组混写,以免引擎误读。
配置 robots.txt 的关键是清晰理解它的“建议”属性,掌握字段语法、匹配优先级并保持严格审查习惯。每次上线前检查根目录文件位置、验证路径匹配关系并用官方工具测试,同时区分抓取控制和索引控制,建议采用“整目录屏蔽+个别路径放行”的精细写法,既保护敏感区域又不影响核心内容收录。资料完整后保留一份可追溯的配置版本记录,便于排查问题时快速复原。