对于运营网站的人来说,robots.txt 是一份绕不开的基础文件。它存放在网站根目录,是一份纯文本的"抓取指南",用来告诉搜索引擎爬虫:站内哪些路径可以抓取,哪些路径应当回避。设置合理,爬虫会把有限的抓取预算花在关键页面上,帮助内容更快被索引;一旦配置出错,轻则重要页面迟迟不被收录,重则可能导致整站排名异常甚至被清出索引。这篇文章将从零开始,把它的语法、逻辑和常见坑位一次讲清楚。
robots.txt 的访问地址是固定且唯一的,即域名根路径下,比如 https://example.com/robots.txt。它的本质是向爬虫提出抓取请求的"调度表",但它无权决定一个页面最终是否进入搜索引擎的索引库。假如你想让某个页面彻底从搜索结果中消失,正确手段是使用 noindex 标签,因为 robots.txt 只管"是否抓取",而 noindex 管的是"是否收录",这两者不能混为一谈。
同时要清醒认识到,这份文件对爬虫来说只是一份"君子协定"。正规搜索引擎的爬虫会遵守其中的条款,但许多恶意采集脚本或非正规工具完全无视它。因此,任何涉及用户隐私、支付回调或核心商业数据的路径,绝不能把 robots.txt 当作唯一的防线,必须叠加登录认证、IP 白名单或 Web 防火墙等硬性防护措施。
robots.txt 的内容由若干规则组构成,每一组必须以 User-agent 字段开头。书写时要遵循"字段名: 值"的格式,建议全部使用小写字母,并在冒号后面留一个空格,这样能最大程度避免不同解析器之间的兼容性问题。
该字段用来标明当前规则组适用于哪个爬虫。例如,写 User-agent: Googlebot 就仅对谷歌的搜索爬虫生效;而使用通配符 User-agent: * 则代表所有未单独指定的爬虫都适用。一个文件里可以编排多个规则组,为不同爬虫定制不同的访问权限。
Disallow 用于声明禁止抓取的路径,Allow 则相反,用于声明允许抓取的路径。一个高频误用的细节是:当 Disallow 后面什么都不写,也就是 Disallow: 时,表示解除全部限制,允许爬虫抓取全站。当 Allow 和 Disallow 同时匹配到某个 URL 时,搜索引擎遵循"最长匹配优先"的规则——即路径匹配得更具体的那条规则胜出。例如,同时存在 Disallow: /api/ 和 Allow: /api/public/ 时,/api/public/ 下的资源依然可以被正常抓取。
Sitemap 指令用于声明网站地图的完整 URL,方便爬虫快速获得全站内容清单,通常放在文件末尾。Crawl-delay 指令虽然字面意思是设定抓取间隔,但谷歌官方早已公开声明会忽略它。若确需限制抓取频率,请前往 Google Search Console 后台调整相应设置,不要在文件中做无用功。
下面列出几个最常见的配置需求。你可以直接套用模板,并把路径替换成自己站点的实际目录。
在实际排查中,很多问题并不复杂,根源往往是几个固定的写法失误。以下两点值得反复检查:
第一,路径匹配的精度问题。不要把 Disallow: /shopping-cart 写成 Disallow: /shopping 这样模糊的规则,否则爬虫可能误以为 /shopping-cart、/shopping-bag 等相似前缀的页面都不可抓取,白白浪费收录机会。第二,符号使用不当。部分早期写法习惯使用 * 和 $ 正则符号,但在许多解析器中这些并不被完整支持,容易引发预期外的行为,尽量用前缀匹配即可。
建议每次修改文件后,顺手在浏览器中访问 robots.txt 的地址查看格式,也可以用搜索引擎的抓取测试工具验证实际效果。确保首页、栏目页等关键路径没有被意外屏蔽,是配置后的第一道检查关。
不会直接导致排名下降,但会造成严重的间接影响。如果误屏蔽了全站或关键板块,爬虫无法抓取页面,搜索引擎无法评估内容质量,收录量会持续下滑,最终表现为整体流量骤减。这比"降权"更值得警惕。
遵循"最长匹配优先"的原理。哪条规则的路径更长、更具体,就由哪条规则说了算。利用这个特性,你可以在屏蔽某个目录的同时,单独放行其中特定的公开资源。
它只是向爬虫提供一个额外的抓取入口提示,帮助爬虫更快发现站点地图文件。但这并不是必需的,因为搜索引擎也可以通过其他地方主动发现地图。即便写错了 Sitemap 地址,通常也不会触发严重问题。
写好 robots.txt 的关键,在于清楚地区分"抓取"与"收录"两个概念,并掌握最长匹配优先的规则逻辑。建议你现在就打开根目录的文件检查一遍:确认后台和敏感接口是否被正确屏蔽,同时确认首页与主要内容路径没有任何限制。每次调整后,用实测工具验证效果,一段时间后再回头复查,避免规则越积越乱。