广州SEO-ZSEO工作室专注广州SEO服务,为您提供专业的公司及企业SEO顾问服务。

SEO的Robots协议robots.txt写法与规则详解【原创精华】

SEO技术 ZSEO 884℃ 0评论

robots.txt作为蜘蛛抓取网站时访问的第一个文件,在SEO优化中,正确的Robots协议语法规则是网站成功被抓取和收录的前提,本文通过大量测试探讨得出了robots协议的规则和原理。

SEO的robots.txt协议写法与规则详解

一、什么是Robots协议?

Robots协议(也称为爬虫协议、机器人协议等)的全称是“网络爬虫排除标准”(Robots Exclusion Protocol),网站通过Robots协议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取。robots.txt是搜索引擎中访问网站的时候要查看的第一个文件。
作为一个协议,它防君子不防小人,有些搜索引擎并没有严格按照协议处理,因此导致有些内容在robots.txt中已设置为Disallow,但是却发现还被收录。

二、Robots协议写法:

(1)User-agent: *

指定搜索引擎类型,常见类型有:


所有蜘蛛:* 百度蜘蛛:Baiduspider 谷歌蜘蛛:Googlebot 360蜘蛛:360Spider SOSO蜘蛛:Sosospider 有道蜘蛛:YoudaoBot 搜狗蜘蛛:Sogou News Spider MSN蜘蛛:msnbot 一搜蜘蛛:YisouSpider 宜搜蜘蛛:EasouSpider

(2)Disallow: /tmp/

禁止蜘蛛抓取的目录或文件
  目录或文件部分支持使用两个特殊字符:


* 表示0-n个任意字符(n表示无数个) $ 表示链接结束位置

例如:

1)Disallow: /?s=* 表示禁止抓取/?s=开头,后面是任意字符的链接
2)Disallow: /?s=zjmainstay$ 表示禁止抓取/?s=zjmainstay,但是/?s=zjmainstayxxx却是可以抓取的,因为$限定了它的结束位置。
3)Disallow: *.jpg$ 表示禁止抓取以.jpg结束的文件。
4)Disallow: *? 表示禁止抓取带?的链接,通常指动态链接。

(3)Allow: /tmp/

允许蜘蛛抓取的目录或文件
  目录和文件部分语法与上面介绍Disallow相同。

(4)Sitemap: http://www.zseoo.com/sitemap_baidu.xml

部分搜索引擎支持robots.txt中携带Sitemap(站点地图)信息,Sitemap是XML格式,格式参考相应搜索引擎的语法,大同小异。

(5)针对不同搜索引擎提供不同规则

robots.txt允许针对不同搜索引擎提供不同规则,但同一个搜索引擎类型不能写多次User-agent,如:


#允许百度抓取全站任意内容 User-agent: Baiduspider Allow: / #不允许谷歌抓取/admin/目录下任意内容 User-agent: Googlebot Disallow: /admin/ #不允许其他所有蜘蛛抓取全站任意内容 User-agent: * Disallow: /

三、Robots协议写法常见问题

(1)关键词User-agent:Disallow:Allow:Sitemap: 没有以大写字母开头,冒号后面没写空格

规范写法举例:


User-agent: * Disallow: /tmp/ Allow: /SEO/ Sitemap: http://tool.zseoo.com/sitemap.xml

(2)Disallow与Allow混用,先后顺序是否影响

测试示例:


#蜘蛛协议测试 User-agent: * #禁用全部,允许特例 #测试链接1:/?disallow_all_allow_one=notabc #测试链接2:/?disallow_all_allow_one=abc Disallow: /?disallow_all_allow_one= Allow: /?disallow_all_allow_one=abc #结果,全部禁用,特例允许 #禁用特例,允许全部 #测试链接3:/?disallow_one_allow_all=notabc #测试链接4:/?disallow_one_allow_all=abc Disallow: /?disallow_one_allow_all=abc Allow: /?disallow_one_allow_all= #结果,特例不允许,全部允许 #允许全部,禁用特例 #测试链接5:/?allow_all_disallow_one=notabc #测试链接6:/?allow_all_disallow_one=abc Allow: /?allow_all_disallow_one= Disallow: /?allow_all_disallow_one=abc #结果,允许全部,特例不允许 #允许特例,禁用全部 #测试链接7:/?allow_one_disallow_all=notabc #测试链接8:/?allow_one_disallow_all=abc Allow: /?allow_one_disallow_all=abc Disallow: /?allow_one_disallow_all= #结果,允许特例,禁用全部 #结果 #测试链接1:/?disallow_all_allow_one=notabc 不允许 #测试链接2:/?disallow_all_allow_one=abc 允许 #测试链接3:/?disallow_one_allow_all=notabc 允许 #测试链接4:/?disallow_one_allow_all=abc 不允许 #测试链接5:/?allow_all_disallow_one=notabc 允许 #测试链接6:/?allow_all_disallow_one=abc 不允许 #测试链接7:/?allow_one_disallow_all=notabc 不允许 #测试链接8:/?allow_one_disallow_all=abc 允许 #结论 #规则先后顺序无关,更完整的规则覆盖通配规则 #即: #规则:?s= #低于 #规则:?s=a #低于 #规则:?s=abc #测试同一个规则同时出现Disallow和Allow,是否受顺序影响 #先Allow再Disallow Allow: /?allow_disallow= Disallow: /?allow_disallow= #结果 #测试链接9-1:/?allow_disallow=a 允许 #测试链接9-2:/?allow_disallow=abc 允许 #先Disallow再Allow Disallow: /?disallow_allow= Allow: /?disallow_allow= #结果 #测试链接10-1:/?disallow_allow=a 允许 #测试链接10-2:/?disallow_allow=abc 允许 #结论 #相同规则同时写Allow和Disallow,Allow规则生效

关于Robots协议规则原理的结论

规则先后顺序无关,更完整的规则覆盖通配规则,相同规则同时写Allow和Disallow,Allow规则生效

(3)Disallow: /tmpDisallow: /tmp/ 的区别

测试示例:


#测试有没有目录分隔符的区别 User-agent: * #没有目录分隔符 #测试链接11:/tmp1 #测试链接12:/tmp1xxx #测试链接13:/tmp1/ #测试链接14:/tmp1/xxx Disallow: /tmp1 #有目录分隔符 #测试链接15:/tmp2 #测试链接16:/tmp2xxx #测试链接17:/tmp2/ #测试链接18:/tmp2/xxx Disallow: /tmp2/ #结果 #测试链接11:/tmp1 不允许 #测试链接12:/tmp1xxx 不允许 #测试链接13:/tmp1/ 不允许 #测试链接14:/tmp1/xxx 不允许 #测试链接15:/tmp2 允许 #测试链接16:/tmp2xxx 允许 #测试链接17:/tmp2/ 不允许 #测试链接18:/tmp2/xxx 不允许 #测试结论:/tmp1等价于/tmp1*,/tmp2/等价于/tmp2/*,规则从左到右需要每个字符匹配才适用该规则 #因此,/tmp1适用于以tmp1开头的链接,而/tmp2/适用于以tmp2/开头的链接

测试robots.txt文件下载

robots.txt写法

(4)在哪测试robots.txt的正确性

百度站长平台robots文件检测及生成:http://zhanzhang.baidu.com/robots/index
提示:网站修改后robots.txt保存到网站根目录,然后点击检测并更新直到出现robots.txt内容,底部有填写测试链接并测试的功能。上面测试链接中开始的/不需要填写。

(5)关于目录和文件部分写法常见问题

1)Disallow: /tmpDisallow: /tmp/ 的区别是什么?
  Disallow: /tmp等价于Disallow: /tmp*,因此,以tmp开头的目录都被禁止;
  同理,Disallow: /tmp/等价于Disallow: /tmp/*,是以tmp/开头的都禁止,明显后者多了一个/
  2)Disallow: /tmp规则中开始的/表示链接的开始,即http://www.domain.com/tmp这个链接是被禁止的,在百度站长平台进行robots.txt测试时,链接填写tmp即可。

(6)示例:我的网站只想/questions/show/[id]的页面允许被蜘蛛抓取,要怎么写?


#屏蔽全站大部分内容,保留首页和特定栏目页的例子 User-agent: * Allow: /$ Disallow: /* Allow: /questions/show/*
喜欢 (2)or分享 (0)
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址