
做网站运营或者刚接手网站管理的朋友,肯定都听说过Robots.txt这个小文件——它就像你家客厅门口贴的“访客须知”,告诉来串门的搜索引擎爬虫(比如百度蜘蛛、谷歌bot)哪些房间可以进、哪些房间不能碰,别看它只有几行字,写不对的话要么让重要页面迟迟不被收录,要么不小心把不该公开的敏感目录暴露出去,甚至还可能直接让整站被爬虫“拉黑”一阵子,今天咱们就用问答的方式,把robots.txt的写法规则、禁止抓取的场景和避坑技巧说透,看完你就能自己动手写一个没问题的文件。
robots.txt到底是什么?存放在网站的哪个位置?
很多新手刚接触时,会以为robots.txt是后台系统里的一个设置项,其实它是一个纯文本格式的小文件,必须放在网站的根目录下——也就是你通过“网站域名/robots.txt”能直接打开的那个地方,比如百度的就是https://www.bAIdu.com/robots.txt,腾讯云的是https://cloud.tencent.com/robots.txt,如果放在子目录里,爬虫根本找不到,也就白写了。
它的作用就是给爬虫“划区域”:开放给爬虫爬取和收录的内容不用特别说(默认是全开放的),不想让它们碰的内容,比如后台管理入口、测试版页面、用户隐私数据的生成路径、重复内容的临时存档,就要用规则明确写出来,不过要注意,它只是“建议性”的,不是“强制性”的——正规的、负责任的搜索引擎爬虫都会遵守,但恶意爬虫(比如专门偷内容的采集程序)完全可能忽略它直接爬,所以真正的敏感数据(比如用户的身份证号、订单详情、内部员工的文档)不能只靠robots.txt保护,还得加密码、做权限验证、用HTTPS加密,甚至干脆别放在公网能访问的目录里。
写robots.txt的基本语法规则有哪些?
要想写对这个文件,得先掌握几个核心的、通用的语法符号和指令——不管是百度蜘蛛、360搜索蜘蛛还是搜狗的,这些基本规则都是通用的,只是个别高级指令略有不同(比如百度支持Allow指令的优先级反向设置,但一般新手不用碰这个)。
核心指令有三个?不,新手只需要记住这两个就行
很多教程会提四个甚至五个,但日常使用中,最常用的只有User-Agent(指定规则针对的爬虫)和Disallow(禁止爬虫访问的内容),第三个Allow(允许爬虫访问的内容)只有在需要“反向开放”的时候才会用——比如你禁止了整个/admin目录,但允许爬虫访问/admin/login.PHP这个页面给用户展示登录入口的SEO信息(不过登录入口本身一般也不建议收录,除非是专门的门户类登录页需要引流)。
User-agent怎么写?
User-agent是规则的“适用对象”,每一组规则(User-agent + 下面的Disallow/Allow)都要单独写,如果你想写适用于所有正规搜索引擎爬虫的通用规则,就用星号“*”代替具体的爬虫名称——这个也是新手最常用的写法。
如果你想单独针对某一个爬虫写规则,比如只禁止百度蜘蛛爬某个目录,其他爬虫可以爬,就得用对应的爬虫名称:
Disallow怎么写?
Disallow是规则的“核心限制”,后面跟的是你想禁止访问的路径,路径必须以斜杠“/”开头(代表根目录),后面可以留空、跟具体的目录名、文件名,或者用通配符。
Disallow: (后面留空):表示没有任何限制,所有内容都可以爬——这个一般不用写,因为默认就是全开放的,但如果你前面有通用规则禁止了某些内容,后面想单独给某个爬虫开白名单,就可以单独写这一组。
Disallow: /:表示禁止访问整个网站——这个是超级大坑!新手千万不要随便试,除非你的网站还在搭建阶段,完全不想让任何爬虫碰(比如还在填测试数据、设计页面),或者是临时要维护全站内容不想收录旧版本。
Disallow: /admin/:表示禁止访问根目录下的admin文件夹及其里面的所有子文件夹、文件——比如后台管理入口、用户信息管理页面这些,一般都放在admin或者类似的目录里,一定要加上这个规则。
Disallow: /test.html:表示禁止访问根目录下的test.HTML这个单独的文件——比如你临时做的一个测试排版的页面,或者是不想公开的草稿页面,就可以这么写。
Disallow: /.zip$:表示禁止访问所有以.zip结尾的文件——不管是在哪个目录下的,比如网站的备份文件、资源压缩包,这些不用收录,还可能占用服务器带宽,加上这个通配符规则很实用,注意这里的通配符有两个:“”代表任意字符(包括多个字符、没有字符),“$”代表路径的结尾——如果不加“$”,Disallow: /*.zip 也会禁止访问比如/zipfile.html这种包含.zip但不是以它结尾的文件,所以加“$”更精准。
高级一点的Allow指令怎么用?
前面说过,Allow只有在“反向开放”的时候才有用,举个简单的例子:你禁止了整个/backup/目录,但里面有一个/backup/important-report.html是你想让搜索引擎收录的重要年度报告(虽然年度报告一般不会放在backup里,但举例子方便理解),这时候规则就要这么写:
User-agent: * Disallow: /backup/ Allow: /backup/important-report.html
这里要注意规则的优先级——不同的搜索引擎优先级略有不同,但通用的原则是“更具体的路径优先级更高”,不管是Disallow还是Allow,比如上面的例子里,/backup/important-report.html比/backup/更具体,所以Allow指令生效,爬虫可以访问这个文件,其他/backup/里的内容就不能碰。
注释怎么写?
如果你写了好几组规则,怕自己或者后面接手的人忘记为什么这么写,可以加上注释——注释以井号“#”开头,后面的内容不管是中文还是英文,正规的爬虫都会自动忽略,不会影响规则的执行。
# 禁止所有正规爬虫访问后台管理目录 User-agent: * Disallow: /admin/ # 禁止访问所有备份压缩包,节省带宽 Disallow: /*.zip$ Disallow: /*.rar$ Disallow: /*.tar.gz$ # 百度蜘蛛单独禁止访问测试版子域名的入口页?不对,子域名的robots.txt要单独放在子域名的根目录下 # 哦对了,差点忘了说这个重要的点!
子域名的robots.txt怎么处理?
刚才的注释里提到了,每一个独立的子域名都需要单独放一个robots.txt文件——比如你的主站是https://www.example.com,测试版子域名是HTTPs://test.example.com,那么test子域名的robots.txt就要放在https://test.example.com/robots.txt这个位置,不能放在主站的根目录下,否则测试版子域名的规则不会生效,测试内容很可能会被收录,干扰主站的seo。
比如测试版子域名不想让任何爬虫碰,就可以在test.example.com的根目录下放这样一个robots.txt:
User-agent: * Disallow: /
robots.txt写好后怎么检查有没有问题?
写好robots.txt并上传到根目录后,不能直接就不管了,一定要检查一下,避免踩坑,检查的方法主要有两个:
直接在浏览器里打开检查
通过“网站域名/robots.txt”直接打开文件,看看能不能正常显示——如果显示404 Not Found,说明文件没上传到根目录,或者文件名写错了(注意文件名必须全小写,是robots.txt,不是Robots.txt、ROBOTS.TXT或者robot.txt);如果显示的内容和你写的不一样,说明上传的时候出错了,或者之前的旧文件没覆盖掉。
用搜索引擎提供的站长工具检查
这个方法更专业,能直接模拟爬虫访问你的网站,看看规则有没有生效,有没有误禁止重要页面,比如百度的站长平台(现在叫百度搜索资源平台)里就有“robots检测”工具,你只需要输入网站域名,工具就会自动分析你的robots.txt,指出有没有语法错误、有没有误禁止的高频收录页面、有没有重要的目录没禁止(比如常见的后台目录admin、wp-admin(WordPress的后台目录)、dede(织梦CMS的后台目录))。
常见的robots.txt写法错误有哪些?
新手最容易犯的几个错误,一定要避免:
文件名写错:比如写成Robots.txt、ROBOTS.TXT、robot.txt——正规的爬虫对文件名是敏感的,必须全小写,有“s”。
文件没放在根目录下:比如放在了/public_html/admin/目录里,或者子域名的规则放在了主站的根目录里——爬虫找不到,规则就白写。
误写了Disallow: /:这个超级大坑前面已经说过了,会禁止所有正规爬虫访问整个网站,导致整站迟迟不被收录,甚至已收录的页面也会被慢慢删除,如果不小心犯了这个错误,要赶紧修改成正确的规则,然后去站长工具里提交“抓取诊断”或者“更新robots.txt”的请求,让搜索引擎尽快重新抓取。
路径没有以斜杠“/”开头:比如写成Disallow: admin/——正规的爬虫不会识别这个路径,规则不会生效。
通配符使用不当:比如写成Disallow: /admin——会禁止访问所有包含“admin”的路径,administrator/、/PRoduct-admin.html这些,可能会误禁止重要的页面;又比如写成Disallow: /.zip——会禁止访问比如/zipfolder/index.html这种包含“.zip”但不是以它结尾的文件,所以一定要记得加“$”。
只靠robots.txt保护敏感数据:前面也说过,恶意爬虫会忽略它,所以真正的敏感数据一定要加密码、做权限验证、用HTTPS加密,甚至干脆别放在公网能访问的目录里。
什么时候需要更新robots.txt?
robots.txt不是写好一次就一劳永逸的,遇到以下情况时,一定要及时更新:
网站功能上线:比如新增了用户个人中心的生成路径(一般不需要收录)、新增了资源下载区的压缩包(需要禁止访问.zip/.rar等文件)。
网站维护阶段:比如要临时维护全站内容,不想收录旧版本,就可以先加上Disallow: /,维护完之后赶紧改回来。
发现恶意爬虫:比如发现某个恶意爬虫专门偷你的内容,可以单独针对它写规则(虽然它可能忽略,但至少可以过滤掉一部分正规的恶意爬虫检测工具标记的爬虫)。
除了robots.txt,还有没有其他禁止爬虫抓取的方法?
有的,robots.txt只是最常用的“第一道防线”,还有几个更精准的方法:
meta robots标签:可以在单个页面的
标签里加上——noindex表示不要收录这个页面,nofollow表示不要爬取这个页面上的所有链接,这个方法比robots.txt更精准,因为它是直接放在页面里的,恶意爬虫如果能爬取页面,也可能会看到,但正规的搜索引擎爬虫一定会遵守。X-Robots-Tag HTTP响应头:可以在服务器的配置文件里(比如Apache的.htaccess、Nginx的nginx.conf)加上这个响应头,针对某个目录或者某类文件设置noindex、Nofollow——这个方法和meta robots标签类似,但不需要修改每个页面的代码,适合批量设置。
密码保护/权限验证:这个是最可靠的方法,只有输入正确的用户名和密码,或者有对应的权限才能访问页面,不管是正规爬虫还是恶意爬虫都进不去。
robots.txt是网站SEO和安全管理中非常重要的一个小文件,新手只要掌握了基本的语法规则、常见的禁止场景和避坑技巧,就能自己动手写一个没问题的文件,写好之后一定要检查,遇到情况要及时更新,同时也要配合其他方法一起使用,才能更好地保护网站、提升SEO效果。







网友评论文明上网理性发言 已有0人参与
发表评论: