robots.txt 是存放在网站根目录的一个纯文本文件,它通过一套简单的语法向搜索引擎爬虫说明网站上哪些路径可以访问、哪些应当回避。正确配置这份文件,能让爬虫的抓取集中在重要页面上,提升收录效率;而配置不当,则可能造成页面长期不收录,甚至影响整站权重。这篇指南先从它的作用和边界讲起,再拆解语法细节,最后列出几个容易翻车的坑。
robots.txt 的作用对象是遵守规则的搜索引擎爬虫,比如 Googlebot 或者百度的蜘蛛。它通过定义规则,告诉爬虫网站哪些区域允许抓取,哪些区域应当停止抓取。但需要明确的是,这份文件无法阻止页面被索引——就算你禁止抓取某个页面,搜索引擎仍可能通过外部链接等方式发现它并将它加入索引,只是不显示它的具体内容。
如果你需要彻底避免某个页面出现在搜索结果里,正确的做法是在该页面的 HTML 头部加入 noindex 标签,这才是控制在搜索结果中展示的手段。此外,robots.txt 对恶意爬取程序几乎无效,凡是涉及用户隐私、支付交易或商业机密的目录,必须配合登录权限、IP 白名单等访问控制措施,不能只靠这段协议来防御。
一个标准 robots.txt 文件由多个规则组构成,每组都以 User-agent 开头。书写格式为“字段名: 值”,冒号后保留一个空格,字段名统一使用小写,能减少兼容性问题。注释以井号(#)开头,仅用于说明,不影响解析。
User-agent 用来指明这组规则面向的对象。例如,User-agent: Googlebot 只对谷歌爬虫生效;User-agent: * 则适用于所有未被单独指定的爬虫。你可以在同一文件里为不同的爬虫写多个规则组,为它们定制不同的访问策略。同一组内,后面写下的规则是对前面规则的补充,不会互相覆盖。
Disallow 声明禁止访问的路径,Allow 则声明允许访问的路径。规则书写时,路径应当以相对方式表示,例如 Disallow: /private/ 而非 Disallow: https://example.com/private/。一个容易忽略的细节是,Disallow 之后什么都不写,即 Disallow: 表示解除全部限制,允许爬虫访问全站。
当存在相互冲突的规则时,搜索引擎执行的是最长匹配原则:哪条规则匹配的路径更长、更具体,就以哪条为准。举例来说,若同时存在 Disallow: /api/ 和 Allow: /api/public/,那么 /api/public/ 下的资源会被允许访问,而 /api/ 下其余内容仍被禁止。不过,不同搜索引擎在执行细节上略有差异,如非必要,不建议过度依赖这一机制。
Sitemap 字段用来指定站点地图的完整 URL,帮助爬虫更快发现新内容,示例为 Sitemap: https://example.com/sitemap.xml。Crawl-delay 则设置爬虫两次抓取之间的最小间隔秒数,适用于服务器负载能力有限的站点。需要注意,并非所有搜索引擎都支持 Crawl-delay,部分爬虫会直接忽略。
场景一:禁止爬虫访问后台管理目录,防止管理地址被探测。
User-agent: * Disallow: /admin/场景二:阻止站内搜索结果页进入索引,避免产生大量低质量网址。
User-agent: * Disallow: /search?场景三:隔离暂未完成的页面,只开放已就绪的公开目录。
User-agent: * Allow: / Disallow: /draft/书写完成后,可借助主流搜索引擎提供的工具进行校验,例如 Google Search Console 的机器人测试工具,它能直观反馈每一条规则的实际效果。
第一个误区是混淆 robots.txt 与 noindex。前者管“抓不抓”,后者管“展不展示”。如果只想让页面不出现在结果页,noindex 更直接。第二个误区是规则写错语法而不自知:比如漏了冒号后面的空格、用了大写字段名,这些都可能让规则部分失效。第三个误区是设置了过于宽泛的禁止规则,例如 Disallow: / 会把整站封闭,仅适合用在临时关闭站点的情况;若误留在生产环境,后果几乎等同整站消失。
另一个细节是,文件必须命名为 robots.txt 并放在根目录,大小写不能出错。修改文件后建议观察一到两周,抓取日志是判断效果的最佳依据。对于需要长期禁止抓取的目录,务必同时设置相应的权限验证,不要仅依赖协议层约束。
没有固定时间表。不同引擎对文件的抓取频率各不相同,通常在几分钟到几天之间浮动。修改后可以通过搜索引擎站长工具主动提交更新,加快生效速度。
可以。文件支持多个规则组并存,以满足不同爬虫的差异化需求。建议将通用规则写在 User-agent: * 组内,再为特定爬虫单独补充额外规则,便于后续维护。
可以,但并非必要。这类资源通常由浏览器加载,与搜索引擎爬虫的请求路径不同,屏蔽意义有限。更合理的做法是通过页面级的 nofollow 或资源访问权限来控制。
配置 robots.txt 的核心在于厘清“允许抓取”与“禁止索引”的边界。建议从最小限制起步:先放行全部页面,再针对确需回避的敏感目录逐步加入规则。每次修改后,借助站长工具校验语法,并持续关注抓取日志与收录变化,以便及时调整策略。