robots.txt是放在网站根目录下的一个纯文本文件,通过简洁的指令告诉搜索引擎爬虫哪些链接可以抓取、哪些需要绕行。配置合理,爬虫抓取效率高,新页面能更快被索引;配置不当,轻则抓取延迟,重则整站收录异常。掌握核心语法和匹配规则,才能让这份文件真正为你所用。
很多人把robots.txt当作控制页面是否出现在搜索结果里的工具,这是误解。它只管爬虫的"抓取"动作,无法决定页面是否被"收录"。在浏览器地址栏输入"你的域名/robots.txt"就能看到当前配置内容。即使屏蔽了某个路径,搜索引擎仍可能通过外链发现其中的页面,甚至展示不完整的摘要快照。如果想让页面从搜索结果彻底消失,应该使用noindex标签,而不是依赖这个文件。
还需要留意的是,robots.txt本质是"君子协议",全凭爬虫自觉遵守。主流蜘蛛如Googlebot、Bingbot会严格执行,但第三方采集程序或恶意脚本不会理会。涉及用户隐私、后台管理、交易数据等敏感路径,必须配合登录验证、IP白名单或防火墙等安全手段,不能把站点安全完全寄托在这份协议上。
robots.txt由多个规则组组成,每组以User-agent行开始,组与组之间用空行分隔。每条指令格式统一为"字段名: 值",冒号必须是英文半角符号,冒号后建议保留一个空格,既方便阅读也能减少解析兼容性问题。
这个字段声明规则组对哪种爬虫生效。比如只想限制谷歌搜索爬虫,就写"User-agent: Googlebot";想让所有搜索引擎都生效,用通配符"User-agent: *"。你可以在同一文件里为不同爬虫制定差异化策略,比如给Googlebot更宽松的抓取权限,对Bingbot限制某些目录。
Disallow声明禁止抓取的路径,Allow声明允许抓取的路径。有个容易忽略的细节:Disallow后面不填任何值,表示允许抓取全站。当多个规则同时命中一个URL时,搜索引擎按照"最长匹配优先"处理,即路径字符串越长越具体,优先级越高。例如同时存在"Disallow: /admin/"和"Allow: /admin/public/",后者路径更长,public子目录就会被允许抓取。
Sitemap字段用于声明站点地图的完整地址,帮助爬虫快速找到网页列表,通常放在文件末尾。Crawl-Delay设定抓取间隔秒数,部分搜索引擎支持,但谷歌官方不认这个指令,它更推荐在Search Console后台控制抓取速率。
第一个常见错误是路径理解偏差。Disallow后面填的是相对网站根目录的路径,不是完整网址。想屏蔽/images/目录,正确写法是"Disallow: /images/",而不是完整写"https://你的域名/images/"。第二个常见问题是通配符滥用。星号(*)在路径中代表任意字符序列,比如"Disallow: /*?from"会屏蔽所有带from参数的URL,但如果参数本身很重要,贸然使用会导致大量页面被误屏蔽。第三个误区是忽略大小写敏感性。路径匹配是区分大小写的,/Private和/private是两个完全不同的路径,配置时务必保持与真实目录一致。另外,文件编码建议使用UTF-8无BOM格式,避免中文注释或特殊字符导致解析异常。
写完robots.txt不是终点,验证才是关键环节。按以下步骤逐项检查:
有个典型的反面案例:某站点为了加速收录,把整个URL参数路径全部用星号屏蔽,结果搜索结果的页面快照大量丢失样式,原因就是CSS文件也被规则误拦截。配置规则时,尽量使用具体路径而不是宽泛的通配符,宁可多写几条明确的规则,也不要偷懒用一条模糊匹配。
建议定期检查文件内容是否被篡改,特别关注是否有异常的Disallow规则。配置好文件后,可以在服务器层面设置只读权限,防止被非法写入。若发现异常,立即恢复默认配置并排查服务器安全漏洞。
可以。如果屏蔽整个子栏目,例如"Disallow: /category/",那么该目录下所有层级的内容都会被屏蔽,不需要逐层写多条规则。但注意,更具体的路径规则优先级更高,所以仍然可以针对其中的某个子目录单独放行。
没有固定时间。搜索引擎会在下一次抓取该文件时读取更新,通常需要数小时到数天不等。如果想要尽快生效,可以在搜索引擎站长后台主动提交robots.txt文件或请求抓取。
配置robots.txt要始终记住三件事:它只管抓取,不管索引;路径是相对根目录的,不是完整URL;规则匹配是"最长优先"且区分大小写。每次改动后,用站长工具的测试功能验证一遍,确保没有误伤重要资源。如果需要屏蔽敏感内容,务必同时配合noindex和访问控制手段,不要把安全寄托在一个纯文本文件上。按这里的清单逐项核对,可以避免绝大多数常见配置事故。