首页  ·  知识 ·  产品运营
robots.txt及meta标签详解及其对搜索引擎的影响
柳永法  http://www.yongfa365.com/  运营  编辑:dezai  图片来源:网络
对于网站管理者和内容提供者来说,有时候会有一些站点内容,不希望被ROBOTS抓取而公开。为了解决这个问题,ROBOTS开发界提供了两个办法:   1./robots.tx
对于网站管理者和内容提供者来说,有时候会有一些站点内容,不希望被ROBOTS抓取而公开。为了解决这个问题,ROBOTS开发界提供了两个办法:

  1./robots.txt
  2.The Robots META标签。

  ROBOTS.TXT语法和作用
  我们知道,搜索引擎都有自己的"搜索机器人"(ROBOTS),并通过这些ROBOTS在网络上沿着网页上的链接(一般是http和src链接)不断抓取资料建立自己的数据库。

  一、robots.txt
  1、 什么是robots.txt?
  robots.txt是一个纯文本文件,通过在这个文件中声明该网站中不想被robots访问的部分,这样,该网站的部分或全部内容就可以不被搜索引擎收录了,或者指定搜索引擎只收录指定的内容。当一个搜索机器人访问一个站点时,它会首先检查该站点根目录下是否存在robots.txt,如果找到,搜索引擎机器人就会按照该文件中的内容来确定访问的范围,如果该文件不存在,搜索引擎机器人就会按照meta中的内容来确定访问的范围,如果meta里没有限制内容,那么搜索引擎机器人就沿着链接抓取。

  robots.txt必须放置在一个站点的根目录下,而且文件名必须全部小写。

  网站 URL
  相应的 robots.txt的 URL

  http://www.yongfa365.com

  http://www.yongfa365.com/robots.txt

  http://www.w3.org/

  http://www.w3.org/robots.txt

  http://www.w3.org:80/

  http://www.w3.org:80/robots.txt

  http://www.w3.org:1234/

  http://www.w3.org:1234/robots.txt

  http://w3.org/
  http://w3.org/robots.txt

  2、 robots.txt的语法
  "robots.txt"文件包含一条或更多的记录,这些记录通过空行分开(以CR,CR/NL, or NL作为结束符),每一条记录的格式如下所示:

  ":"。

  在该文件中可以使用#进行注解,具体使用方法和UNIX中的惯例一样。该文件中的记录通常以一行或多行User-agent开始,后面加上若干Disallow行,详细情况如下:

  User-agent:
  该项的值用于描述搜索引擎robot的名字,在"robots.txt"文件中,如果有多条User-agent记录说明有多个robot会受到该协议的限制,对该文件来说,至少要有一条User-agent记录。如果该项的值设为*,则该协议对任何机器人均有效,在"robots.txt"文件中, "User-agent:*"这样的记录只能有一条。

  Disallow :
  该项的值用于描述不希望被访问到的一个URL,这个URL可以是一条完整的路径,也可以是部分的,任何以Disallow 开头的URL均不会被robot访问到。例如"Disallow: /help"对/help.html 和/help/index.html都不允许搜索引擎访问,而"Disallow: /help/"则允许robot访问/help.html,而不能访问/help/index.html。

  任何一条Disallow记录为空,说明该网站的所有部分都允许被访问,在"/robots.txt"文件中,至少要有一条Disallow记录。如果 "/robots.txt"是一个空文件,则对于所有的搜索引擎robot,该网站都是开放的。

  下面是一些robots.txt基本的用法:

  禁止所有搜索引擎访问网站的任何部分:

  User-agent: *
  Disallow: /
  允许所有的robot访问
  User-agent: *
  Disallow:
  或者也可以建一个空文件 "/robots.txt"

  禁止所有搜索引擎访问网站的几个部分(下例中的cgi-bin、tmp、private目录)

  User-agent: *
  Disallow: /cgi-bin/

  Disallow: /tmp/
  Disallow: /private/

  禁止某个搜索引擎的访问(下例中的BadBot)

  User-agent: BadBot

  Disallow: /
  只允许某个搜索引擎的访问(下例中的WebCrawler)

  User-agent: WebCrawler

  Disallow:
  User-agent: *
  Disallow: /
  3、常见搜索引擎机器人Robots名字

  名称                     搜索引擎

  Baiduspider            http://www.baidu.com

  Scooter              http://www.altavista.com

  ia_archiver             http://www.alexa.com

  Googlebot           http://www.google.com

  FAST-WebCrawler http://www.alltheweb.com

  Slurp                  http://www.inktomi.com

  MSNBOT            http://search.msn.com

  4、 robots.txt举例
  下面是一些著名站点的robots.txt:

  http://www.cnn.com/robots.txt

  http://www.google.com/robots.txt

  http://www.ibm.com/robots.txt

  http://www.sun.com/robots.txt

  5、常见robots.txt错误
  颠倒了顺序:
  错误写成
  User-agent: *
  Disallow: GoogleBot

  正确的应该是:
  User-agent: GoogleBot

  Disallow: *
  把多个禁止命令放在一行中:
  例如,错误地写成
  Disallow: /css/ /cgi-bin/ /images/

  正确的应该是
  Disallow: /css/
  Disallow: /cgi-bin/

  Disallow: /images/

  行前有大量空格
  例如写成
  Disallow: /cgi-bin/

  尽管在标准没有谈到这个,但是这种方式很容易出问题。

  404重定向到另外一个页面:
  当Robot访问很多没有设置robots.txt文件的站点时,会被自动404重定向到另外一个Html页面。这时Robot常常会以处理robots.txt文件的方式处理这个Html页面文件。虽然一般这样没有什么问题,但是最好能放一个空白的robots.txt文件在站点根目录下。

  采用了大写。例如
  USER-AGENT: EXCITE

  DISALLOW:
  虽然标准是没有大小写的,但是目录和文件名应该小写:

  user-agent:GoogleBot

  disallow:
  语法中只有Disallow,并没有Allow!

  错误的写法是:
  User-agent: Baiduspider

  Disallow: /john/
  allow: /jane/
  忘记了斜杠/
  错误的写做:
  User-agent: Baiduspider

  Disallow: css
  正确的应该是
  User-agent: Baiduspider

  Disallow: /css/
  Robots.txt常见问题详细解析:

  我们开发了一个针对robots.txt文件的"验检程序",同时又设计了一个搜索程序,专门下载robots.txt文件,以此对新推出的这个"robots.txt验检程序"进行测试。在对DMOZ(ODP)中所链接的站点进行遍历,共计检索240万个站点后,我们总共找到了大概75k的robots.txt文件。

  在这些robots.txt文件中,我们发现了大量的而且是形形色色的问题。有超过5%的robots.txt文件使用了错误格式,有超过2%的文件由于使用的是极其拙劣的格式而导致无法为任何SPIDER读取。我们将发现的一些问题在下面列出来供大家参考借鉴:

  错误1—语法混用
  例如:
  User-agent: *
  Disallow: scooter
  正确语法应为:
  User-agent: scooter

  Disallow: *
  错误2—一行Disallow声明多个目录

  这是一个比较常见的错误。我们发现很多网站在其robots.txt中,在一个Disallow指令行中放入了多个目录。譬如:Disallow: /css/ /cgi-bin/images/

  绝大多数的spiders对上述声明行都无法做出正确的解析,有些Spiders会忽略其空格而解析为/css//cgi-bin//images/,或只解析/images/或/css/,或者根本不予解析。

  正确的语法应为:
  Disallow: /css/
  Disallow: /cgi-bin/

  Disallow: /images/

  错误3—在DOS模式下编辑robots.txt文件

  这也是一个比较常见的错误。正确的做法应该是在UNIX模式下编辑你的robots.txt文件并以ASCII码格式上传。显然并非所有的FTP客户端软件都能够天衣无缝地将文件格式转换为UNIX命令行终端,所以在编辑robots.txt文件时,一定要确保你的文本编辑器是在UNIX模式下。

  错误4—在指示行末尾加注
  在robots.txt文件中,凡以"#"开头的行,均被视为注解内容,这和UNIX中的惯例是一样的。例如:Disallow: /cgi-bin/ # this bans robots from our cgi-bin

  虽然根据RES标准,在指示行的末尾加注是可行的,但这种格式在过去却并非所有的Spiders都能够支持,有些Spiders干脆就把整个句子视为注解内容直接跳过去不读。当然我们知道现如今搜索引擎基本上都能够支持这种格式,不过—仍有可能无法被某些搜索引擎正确解读,你冒得起这个险吗?我们建议在编辑robots.txt文件时,最好让注解自成一行。

  错误5—指令行前有空格
  例如"Disallow: /cgi-bin/",虽然RES标准并未对这种格式予以特别说明,但我们对这种格式是持极力反对态度的。同样的问题摆在你面前你冒得起无法被Spiders正确解读的险吗?

  错误6--404重定向至另一页面
  一般没有robots.txt的网站会将对robots.txt文件的调用请求转至另一页面。这种重定向通常不会产生服务器状态错误或重定向状态信息。然而因为是Spiders自己决定它看到的是robots.txt文件还是一个.html文件。虽然理论上应该不会有什么问题,不过为了保险起见,不妨在你服务器的顶级目录下放一个空的robots.txt文件。在www.google.com/bot.html下,也提供了相同的建议—"如欲避免网络服务器日志中的出错信息‘找不到文件’,可在其根域下创建一个空的robots.txt文件。"

  错误7—声明自相矛盾
  例如:
  USER-AGENT: EXCITE

  DISALLOW:
  虽然RES标准忽略大小写(Case Sensitive),但目录和文件名却是大小写敏感的。所以对于"USER-AGENT"和"DISALLOW"指令,用大小写都是可以的。但对于所声明的目录或文件名却一定要注意大小写的问题。

  错误8—列出所有文件
  这也是一种常见错误,不厌其烦地将目录下文件全数列出。例如:

  Disallow: /AL/Alabama.html

  Disallow: /AL/AR.html

  Disallow: /Az/AZ.html

  Disallow: /Az/bali.html

  Disallow: /Az/bed-breakfast.html

  其实,上面这么多声明行只需用目录选项来替代:

  Disallow: /AL
  Disallow: /Az
  需要注意的是:反斜杠"/"表示禁止搜索引擎进入该目录。如果只有几十个文件需要设置访问权限,那倒也无可厚非。问题是我们发现有一个robots.txt文件中列出了有400k,多达4,000个文件。我们只是纳闷看到这么多声明,有多少Spiders会掉头而去。

  错误9—自创ALLOW指令
  没有ALLOW指令,只有DISALLOW指令!我们发现有这样的用法:

  User-agent: Spot
  Disallow: /john/
  allow: /jane/
  正确写法应为:
  User-agent: Spot
  Disallow: /john/
  Disallow:
  错误10—对声明的目录无反斜杠标识
  例如我们发现有这样的例子:
  User-agent: Spot
  Disallow: john
  对这样的记录Spider该怎么反应?按照RES标准,Spider会将名为"john"的文件和名为"john"的目录都DISALLOW。所以要记得使用"/"来标识所声明的路径(目录)。

  我们还发现,有些网站的优化工作做得真彻底,竟然在其robots.txt中也放了关键词(费解,不明白他们怎么想的)。这些人一定是把他们的robots.txt纯文本文件当作是html文件了。(要记住:在FrontPage下是不可能正确创建robots.txt文件的)

  错误11—网络服务器端的错误配置
  为什么对robots.txt文件的调用请求会产生一个二进制文件?只有网络服务器或FTP客户端软件错误设置的情况下才可能发生这种错误。建议大家定期检查自己的robots.txt文件

  服务器/域名"农场"
  搜索引擎检测服务器或域名"农场"(即包含巨量站点)的一个简单途径是看它们的robots.txt。我们发现规模在400到500个域名的大型域名"农场",其"库"内站点使用都是同一个robots.txt文件。这也就相当于告诉搜索引擎这些使用同一robots.txt文件的站点是相关联的。

  Google率先支持通配符:
  Google是第一家能够支持robots.txt中通配符文件扩展名的搜索引擎。例如:

  User-agent: googlebot

  Disallow: *.cgi
  不过注意了,由于目前只有Google能够支持这种格式,所以"USER-AGENT"只能是"Googlebot"。

  二、 Robots META标签
  1、什么是Robots META标签

  Robots.txt文件主要是限制整个站点或者目录的搜索引擎访问情况,而Robots META标签则主要是针对一个个具体的页面。和其他的META标签(如使用的语言、页面的描述、关键词等)一样,Robots META标签也是放在页面的中,专门用来告诉搜索引擎ROBOTS如何抓取该页的内容。具体的形式类似(见黑体部分):

  
  
  后台管理系统

  

  

  
  
  
  
  2、Robots META标签的写法:

  Robots META标签中没有大小写之分,name="Robots"表示所有的搜索引擎,可以针对某个具体搜索引擎写为name="BaiduSpider"。content部分有四个指令选项:index、noindex、follow、nofollow,指令间以","分隔,注意同种属性正反两个方面(例如:index与noindex)不能同时出现在content之中。

  通常content属性里面的包含的标签有:

  NOINDEX -不索引当前页面
  NOFOLLOW -不跟踪当前页面中所有的链接

  NOARCHIVE -在搜索结果中不保存当前页面的快照

  NOSNIPPET - 在搜索结果中不采用当前页面的头部描述信息,且不保存当前页面的快照

  NOODP -搜索结果中不使用DMOZ中的描述信息,Yahoo、MSN也支持此类标签

  NONE -不索引当前页面以及其中的所有链接,跟"NOINDEX, NOFOLLOW" 含义相同

  Robots Meta标签的缺省值是INDEX和FOLLOW,只有inktomi除外,对于它,缺省值是INDEX,NOFOLLOW。

  这样,一共有四种组合:
  

  

  

  

  需要注意的是:上述的robots.txt和Robots META标签限制搜索引擎机器人(ROBOTS)抓取站点内容的办法只是一种规则,需要搜索引擎机器人的配合才行,并不是每个ROBOTS都遵守的。

  目前看来,绝大多数的搜索引擎机器人都遵守robots.txt的规则,而对于Robots META标签,目前支持的并不多,但是正在逐渐增加,如著名搜索引擎GOOGLE就完全支持,而且GOOGLE还增加了一个指令"archive",可以限制GOOGLE是否保留网页快照。例如:

  

  表示抓取该站点中页面并沿着页面中链接抓取,但是不在GOOLGE上保留该页面的网页快照

 

本文作者:柳永法 来源:http://www.yongfa365.com/
CIO之家 www.ciozj.com 微信公众号:imciow
    >>频道首页  >>网站首页   纠错  >>投诉
版权声明:CIO之家尊重行业规范,每篇文章都注明有明确的作者和来源;CIO之家的原创文章,请转载时务必注明文章作者和来源;
延伸阅读
也许感兴趣的
我们推荐的
主题最新
看看其它的