robots.txt 是存放在网站根目录的纯文本文件,用来向搜索引擎爬虫说明哪些页面可以抓取、哪些应当跳过。配置得当能提升抓取效率,防止无用页面进索引;一旦写错,则可能让整站从搜索结果里消失。理解它的语法和工作机制,是每个站点运营者的基本功。
这份文件本质上是给爬虫的“访问声明”,并不具备强制执行力。主流搜索引擎会按行业惯例遵守其中的指令,但爬虫完全可以无视它。它也不是安全工具,无法替代身份验证或防火墙。
日常运营中,它能帮我们做几件实事:屏蔽 /wp-admin/、/tmp/ 等不需要被展示的路径;拦截带大量跟踪参数的动态链接,避免抓取资源被浪费;在文件里声明 sitemap 的完整地址,让新内容更快被爬虫发现。
需要特别留意的是,robots.txt 对所有访客公开。任何人访问 你的域名/robots.txt 都能看到全部内容。所以涉及登录后才能访问的数据接口、后台操作页面或任何敏感业务数据,绝对不要指望用它来隐藏,必须配合登录校验或服务器访问控制。
文件结构是“字段名: 值”,一行只写一条指令。字段名不区分大小写,但 URL 路径部分严格区分大小写。掌握下面几个常用字段,就能覆盖绝大多数配置场景。
假设网站有一个管理后台目录 /backstage/,希望隐藏其中大多内容,但允许某个公开公告页 /backstage/notice.html 被收录,同时想通知爬虫看到地图文件。一个可参考的写法如下:
User-agent: *
Disallow: /backstage/
Allow: /backstage/notice.html
Sitemap: https://www.example.com/sitemap.xml
这段配置表达了三层含义:默认禁止所有爬虫抓取 backstage 目录;单独放行 notice.html 这一页;最后告知地图地址。书写时注意 Allow 规则要放在 Disallow 之后,且路径必须与实际 URL 完全一致。
robots.txt 的匹配以路径前缀为基本规则,同时支持两个通配符:星号(*)表示任意长度字符,美元符号($)表示路径结尾。
假设要屏蔽所有以 .pdf 结尾的文件,可写为 Disallow: /*.pdf$;如果想拦截所有带问号的动态 URL,可写为 Disallow: /*?*。前者会自动匹配 /files/report.pdf 这类地址,后者则覆盖所有含查询参数的链接。
还需注意,空值 Disallow 表示“无禁止项”,即允许抓取全部内容,这与不同时的默认允许状态一致。另外,路径匹配是区分大小写的,例如 /Product 与 /product 指向的其实是两个不同路径。
很多站点因为配置失误导致收录异常。以下几条是实际运营中最常见的问题,有必要重点规避。
大多数搜索引擎会定期重新抓取该文件,通常从几分钟到几天不等;也支持通过搜索引擎站长平台手动提交更新请求,可明显缩短等待时间。
可以。百度爬虫会遵守文件中 Disallow 规则阻止对本路径的抓取,未抓取的页面自然不会被收录。但要防止敏感内容被收录,更稳妥的方案是同时使用 noindex 标签,二者互为补充。
Disallow 是阻止爬虫抓取而达到阻止收录的目的,noindex 则是允许爬虫抓取但要求其不将该页放入索引。对于不想让用户通过搜索访问但又不介意被读取内容的页面,两种方式可结合使用以达到更理想的控制效果。
配置 robots.txt 的关键在于明确文件边界:它只负责抓取引导,不是安全工具。动笔前先梳理清楚哪些目录必须放行、哪些应屏蔽;路径大小写、通配符和规则顺序都要细致核对。日常维护中,每次改动后建议用站长平台的检测工具验证规则是否符合预期,再配合 sitemap 提交来保证新页面及时被爬虫发现。