只要你的网站上线,就一定会遇到 robots.txt 这个文件。它放置在域名根目录,用几行简单的文本向搜索引擎爬虫表明态度:哪些路径可以随便逛,哪里需要止步。配置得当,爬虫的预算会优先流向核心内容,优质页面收录更快;可一旦路径写错或格式出错,整站被降权甚至从结果页消失的情况也时有发生。本文就不绕弯子,直接把语法基础和最常犯的错误梳理一遍。
查看方式很简单,在浏览器地址栏输入你的域名加上 /robots.txt,比如 https://example.com/robots.txt,就能直接看到内容。它的职责是给爬虫规划抓取路线,相当于一位向导,而最终的收录决定权并不在它手里。想让页面彻底告别搜索结果,必须依靠页面上的 noindex 标签。举个例子,你禁止了某个商品详情页被抓取,但如果它在别的平台被人大量转载,搜索引擎依然可能收录并展示该页,只是显示的来源变成了转载方。
还要注意一个现实:这份文件只约束懂规矩的爬虫。主流搜索引擎的蜘蛛会严格遵守,但那些专门采集数据、频繁刷接口的工具,根本不会理会 robots.txt。所以,涉及后台管理、用户订单、支付回调等敏感目录,必须叠加登录验证、IP 白名单或防火墙规则,不能把安全希望全押在协议之上。
整个文件由若干条规则组构成,每组以 User-agent 开头。所有字段统一为“名称: 值”的格式,冒号用英文半角,冒号后加一个空格。多数搜索引擎对格式略有容错,但规范书写能最大限度减少意外。
这一行指定规则组适用于哪个爬虫。比如只想限制谷歌的蜘蛛,写 User-agent: Googlebot;想对所有搜索引擎生效,用 User-agent: * 即可。你可以创建多个规则组,对不同爬虫给出不同策略,比如对谷歌更宽松、对必应收紧。
Disallow 禁止抓取某路径,Allow 则允许抓取,二者常配合出现。一个容易被忽略的细节:Disallow 后面留空(写成 Disallow:)表示解除所有限制,允许爬取全站。当同一 URL 同时被两者命中时,搜索引擎遵循“最长匹配优先”原则,即更具体的路径获胜。比如同时存在 Disallow: /api/ 和 Allow: /api/public/,后者路径更长更具体,public 子目录下的内容仍会被放行。
Sitemap 指令指向站点地图的完整 URL,方便爬虫一次性找到全部内容,通常放在文件末尾。Crawl-delay 用于设定抓取间隔,但要注意谷歌官方明确表示不支持该指令,它只在部分搜索引擎(如早期的 Bing、Yandex)中生效。想控制谷歌的抓取频率,建议前往 Search Console 设置抓取速率,而不是依赖这个字段。
在 robots.txt 中,* 代表任意字符序列,$ 代表路径结束。比如 Disallow: /*?sort= 可禁止所有带排序参数的动态链接;Disallow: /print/$ 只拦截以 /print/ 结尾的路径。这套规则虽灵活,但用错场景会误伤。比如有人想屏蔽所有带问号的动态 URL,写成 Disallow: /*?*,虽然意图正确,但假如站点存在静态化后的含问号路径,同样会被拦截,导致收录量骤降。建议动笔前先在 robots.txt 测试工具(如 Google 的 Robots testing tool)里逐条验证,确认匹配结果符合预期再上线。
配置错误带来的损失往往是静悄悄的,等你发现时已经过去数周。以下场景值得反复检查:
不安全。它只对守规则的爬虫有效,恶意请求者完全无视。后台目录必须配合登录验证、IP 限流或防火墙才能确保安全,robots.txt 只能作为善意提示,当作第一道防线都不够格。
依照“最长匹配优先”原则,路径更具体的一方生效。如果长度相同,则 Allow 胜出。该规则适用于主流搜索引擎,写好规则后最好用在线工具逐条测试,确认实际匹配结果。
通常几分钟内新内容就会被重新抓取并应用,但已抓取的页面可能在缓存中残留一段时间。如需尽快让某页面从搜索结果中消失,必须搭配 noindex,两者结合才能达到预期效果。
配置 robots.txt 并不复杂,但细节决定成败。建议从空白文件开始,先写清 Sitemap,再按需添加 Disallow 规则,每加一条就用测试工具验证一次。上线后定期关注抓取统计,确保改动没有误伤。记住,这份文件的使命是引导,而不是封锁;凡是涉及安全的操作,别把它当成唯一的守门员。