在网站优化的过程中,网站有一些内容是我们不希望蜘蛛抓取的,如果没有规范,搜索引擎蜘蛛就会随便抓取,就可能会抓取到一些我们不想让它抓取到的内容,或者是抓取到了大量的垃圾页面,为避免这种情况,这个时候就会涉及到robots协议,那么什么是robots协议?Robots协议的语法和写法又是如何呢?
一、什么是robots协议?
1、搜索引擎和我们网站的一个协议。我不想让你来抓取我网站的某个页面,只要定义了,蜘蛛就不会来抓取。用来防止搜索引擎抓取我们不想抓取的,告诉蜘蛛程序在服务器上什么文件可以被抓取,什么文件可以不被抓取。
2、一个单方面的协议,也是百度第一个来我们网站抓取的文件。
3、上线前就要写好,后续再进行增加。
4、robots文件名和.txt格式是固定的,即:robots.txt
5、robots.txt仅对你的网站不希望被搜索引擎收录的内容。
二、robots语法
语法要符合
- 顶格写,第一个字母必须是一个大写的。
- 后面紧跟着英文状态下的冒号。
- 冒号后面再跟着一个在英文状态下的空格。
- 蜘蛛名的第一个字母也要是大写。
1、User-agent
定义搜索引擎蜘蛛类型。比如说:
- User-agent: * 定义所有蜘蛛。
- User-agent: Baiduspider 定义百度蜘蛛。
常见蜘蛛
- Baiduspider百度蜘蛛
- Googlebot谷歌机器人
- MSNBot
- Baiduspider-image
- Youdaobot有道蜘蛛
- Sogouwebspider搜狗
- ChinasoSpider中搜
- Easouspider一搜
- ……
2、Disallow
该项的值用于描述不希望被访问的一组URL,这个值可以是一条完整的路径,也可以是路径的非空前缀,以Disallow项的值开头的URL不会被蜘蛛访问。
注意:在"/robots.txt"文件中,至少要有一条Disallow记录。如果"/robots.txt"不存在或者为空文件,则对于所有的搜索引擎蜘蛛来说该网站都是开放的。
在写Disallow的时候,会遇到一个常见的问题,比如说:Disallow:/data和Disallow:/data/有什么区别?
- Disallow: /data
Disallow: /data。不能抓取data,不能抓取data/index.html,不能抓取data123、data.html、dataabc.html。
不能抓取data这个目录本身,不能抓取data目录里面的内容,不能抓取以data开头的目录名和文件名。
- Disallow: /data/
比如说:Disallow: /data/, 能抓取data ,不能抓取data/index.html,能抓取data123、data.html、dataabc.html。
能抓取data这个目录本身,不能抓取data目录里面的内容,能抓取以data开头的目录名和文件名。
3、Allow
该项的值用于描述希望被访问的一组URL,与Disallow项相似,这个值可以是一条完整的路径,也可以是路径的前缀,以Allow项的值开头的URL是允许蜘蛛访问的。
注意:一个网站的所有URL默认是Allow的,所以Allow通常与Disallow搭配使用,实现允许访问一部分网页同时禁止访问其它所有URL的功能。
4、使用"*"and"$":Baiduspider支持使用通配符"*"和"$"来模糊匹配url。
"*" 匹配0或多个任意字符
"$" 匹配行结束符。
例如:Disallow: /*.jpg$ 意思为:禁止抓取以.jpg格式结尾的图片。
三、robots写法
(1)禁止所有的搜索引擎访问网站的所有内容。
User-agent: *
Disallow: /
*代表所有搜索引擎,/代表所有路径。
新站上线的时候还有很多东西没有准备好,这个时候很多人就会选择禁止所有的搜索引擎访问网站的所有内容,这种做法是不对的,这里就涉及到一个搜索引擎原理,蜘蛛有记忆库,蜘蛛就会对你产生不好的影响,后面就算来了也不太愿意收录了。 在测试阶段可以在本地搭建或是临时域名。一定要上线的话,先开放首页,不要全站屏蔽,起码让蜘蛛有东西可抓。
(2)禁止百度搜索引擎访问网站的所有内容。
User-agent: Baiduspider
Disallow: /
(3)允许所有搜索引擎访问所有内容。
User-agent: *
Allow: /
(4)允许所有搜索引擎抓取动态页面内容。
User-agent: *
Allow: /*?*
(5)不允许所有搜索引擎抓取动态页面内容。
User-agent: *
Disallow: /*?*
把所有的动态路径拿过来看,动态路径里面有个共性,它一定会有个问号,*代表所有,这是一个固定的写法。同样的道理,我们要屏蔽某条路径的时候,先要去找它的规律,比如说/?s=织梦、/?s=内链……,我们要屏蔽这样的路径就可以写成Disallow: /?s=*
下面这张图是百度站长平台里面的,大家可以多去看看,写robots一定要多看多理解,随着时间的积累,慢慢的也就会了。
四、操作
1、robots写好之后,将其命名为:robots.txt
2、将robots.txt文件上传到根目录。
五、检测
Robots协议必须要严格的按照这个语法规则来写,因为这是搜索引擎给出的,否则搜索引擎识别不了。如果自己无法确定,可以通过百度站长平台来确定。如下图所示,通过检测得知robots没有错误,检测其中的一条路径显示为不允许抓取。你需要检测那条路径是否会被抓取,只需要在后面输入路径检测即可。
ps:验证自己写的对还是不对,一定要去检测。
六、什么情况下用
- 通过robots协议屏蔽死链。
- 屏蔽无内容页面和重复的页面。比如说低质量页面,登陆和注册页面就可以屏蔽。
- 不想被抓取的特定路径。
- 统一路径。有些网站的一个页面存在动态和静态两种路径,动态和静态指向的是一个页面,就可以屏蔽动态页面,把网站统一成静态链接。
- 拒绝网站的中文链接。
- 根据情况,不想让网站收录的文件,隐私文件,会员。比如说后台,dede,不想暴露后台,可以用de*代替。
- 提交网站地图。网站地图做好之后,需要将链接地址放到robots文件里面。
七、注意点
- 如果你希望搜索引擎能抓取网站上所有的内容,就不需要写robots协议。
- 写好robots文件,要把文件上传到网站的根目录。
- 生效时间:短的几天,长则半个月一个月的都有,根据蜘蛛抓取的情况决定。
- robots文件一定要根据自己的网站来写。
- 搜索引擎是否遵守由搜索引决定。由搜索引擎本身决定,一般来说会遵守,但有些不会遵守。比如说淘宝和天猫就被抓了一个首页,到底遵守不遵守还是有搜索引擎决定。
- 新站建议不要整站屏蔽。
- 对与不对,可以检测自己是否正确屏蔽生效。
总结
在网站优化过程中,robots协议是必不可少的,因此优化人员应该掌握robots协议的语法,会写robots协议,懂得robots协议会在什么情况下使用以及一些注意事项。