运营网站,几乎都要和 robots.txt 打交道。这份存放在域名根目录的纯文本文件,用简洁的规则告诉搜索引擎爬虫:网站的哪些路径可以抓取,哪些路径需要避开。配置得当,爬虫的抓取预算会集中到核心页面,收录速度和权重分配都能受益;一旦路径写错或语法有误,轻则页面不收录,重则整站从搜索结果中消失。这篇文章就来系统梳理它的语法要点,以及那些容易让人踩坑的细节。
访问 https://你的域名/robots.txt 即可查看当前配置。它的本质是给爬虫提供抓取路线的建议,相当于一个向导,而不是最终的收录裁决者。想要让某个页面彻底从搜索结果中消失,应该使用 noindex 标签;robots.txt 只能阻止爬虫抓取,对于已经被抓取并收录的页面,它无法强制搜索引擎移除。举例来说,你禁止了某个详情页被抓取,但这个页面被其他网站大量转载,搜索引擎依然可能将其收录并在结果中展示。
此外需要清楚,这份文件只对遵守协议的爬虫有效。主流搜索引擎的蜘蛛会严格遵循规则,但恶意采集程序和刷接口的工具根本不会理会这份声明。因此,涉及用户数据、后台管理、订单记录等敏感目录,必须叠加登录验证、IP 白名单或防火墙等硬性防护手段,不能把安全寄托在君子协议上。
robots.txt 由若干条规则组构成,每一组都以 User-agent 字段开始。所有字段统一使用“名称: 值”的格式,冒号采用英文半角,后面跟一个空格。虽然搜索引擎对格式有一定容错,但保持规范书写能避免多数意外情况。
这一行定义当前规则组作用于哪个爬虫。例如只限制谷歌的搜索蜘蛛,就写 User-agent: Googlebot;想对所有搜索引擎的爬虫生效,则使用通配符 User-agent: *。可以按需创建多个规则组,比如对谷歌放行更多路径,对必应收紧限制,各自独立配置。
Disallow 声明禁止抓取的路径,Allow 声明允许抓取的路径,两者常配合使用。需要注意一个细节:如果 Disallow 后面为空(写作 Disallow:),表示解除所有限制,爬虫可以抓取全站。当同一个 URL 同时命中 Allow 和 Disallow 时,搜索引擎遵循最长匹配优先原则,即更具体的路径优先生效。例如同时存在 Disallow: /private/ 和 Allow: /private/public/,后者路径更长更具体,因此 public 子目录依然可以正常抓取。
Sitemap 指令用来声明站点地图的完整 URL,通常放在文件末尾,方便爬虫集中发现内容。Crawl-delay 指令用于设置抓取间隔,但需要留意,谷歌的爬虫早已不识别该指令,如需控制抓取频率,建议通过搜索平台的站长工具进行设置。
robots.txt 支持两种通配符:星号(*)匹配任意数量的字符,美元符号($)表示匹配结尾。合理使用通配符可以极大简化规则,但也要警惕误伤。例如 Disallow: /*.pdf$ 会禁止所有以 .pdf 结尾的文件被抓取;Disallow: /admin 会同时命中 /admin、/administrator、/admin.php 等一切以此开头路径,容易造成误伤。
更稳妥的做法是明确写出完整路径,或者加上结尾符 $ 精确匹配。比如只想禁止 /admin 这个目录本身,写成 Disallow: /admin/ 更安全,避免影响 /admin_panel 之类的其他路径。规则写得越精确,出错的概率越低。
配置错误带来的后果往往超出预期,以下几个场景比较常见:
修正并保存文件后,爬虫会在下一次抓取时立即读取新配置。但搜索引擎重新抓取和更新索引需要时间,短则几小时,长则数天甚至数周。如果之前被屏蔽的页面已从索引移除,恢复收录可能需要更长时间,建议修正后提交 URL 到站长工具主动请求抓取。
各大搜索引擎的站长工具都提供 robots.txt 测试功能,可以输入具体 URL 查看规则匹配结果。此外,也可以在浏览器直接访问 /robots.txt 检查文件状态,或是使用第三方在线检测工具,确认返回的响应状态为 200 而非 404。
并非如此。主流搜索引擎如 Google、Bing、百度等都会遵守,但一些不知名爬虫或恶意采集工具对此视而不见。robots.txt 的定位是协作约定,不是安全防线。对重要数据依然要依赖服务器层面的权限控制。
配置 robots.txt 的核心原则是:规则尽量具体、路径尽量明确、变更前先备份。建议上线前用测试工具逐条验证,并定期检查文件是否被意外修改。把这份文件当作爬虫的交通指引,而不是安全屏障,敏感内容请依赖登录验证和防火墙保护。掌握了语法和常见坑点,你的网站收录之路会顺畅很多。