2007年11月10日星期六

robots.txt和robots Meta标签

今天一天之内,准确的说相隔不到3个小时,就有两个朋友在QQ上让我帮他看看网站,为什么搜索引擎不收录。从我个人角度来看,他们的站做的还不错,除了个别地方(如有几页标题相同之类)不够,没有导致不收录的因素。最后一查看robots.txt,“Disallow: /”。

回想起来,找我咨询的朋友中,还真有不少的一部分都是这样的问题,所以写出来,供不熟悉的朋友参考。

1、robots.txt是什么?

robots.txt是一个纯文本文件,用来告诉网络蜘蛛(不仅限搜索引擎蜘蛛)本站中哪些位置允许抓取,哪些位置不允许抓取。

2、如何正确放置robots.txt?

首先,robots.txt文件必须放置在网站根目录;有域名指向到次目录,在次目录放置的robots.txt文件只对此域名有效。

其次,文件名必须小写,如Robots.txt、roBots.txt、robots.TXT都是错误的。

3、robots.txt内容应该如何写?

文件应该同时包含2个域,“User-agent:”和“Disallow:”,每条指令独立一行。

(1)User-agent:

指定允许哪些蜘蛛抓取,如果给出参数,则只有指定的蜘蛛能够抓取;如值为通配符“*”号,代表允许所有蜘蛛抓取。如:
User-agent: Googlebot

只允许Google的蜘蛛抓取;
User-agent: *

允许所有蜘蛛抓取。

注意:User-agent必须出现在第一行(有意义的行,注释除外),首先声明用户代理。

(2)Disallow:

指定禁止蜘蛛抓取的目录或文件,如:
Disallow: /help.php

禁止抓取根目录下help.php文件;
Disallow: /admin/

禁止抓取根目录下的admin子目录中任何内容;
Disallow:

值为空时,表示不限制,蜘蛛可以抓取站内任何内容。

如果需要指定多个目录或文件,可以用多个“Disallow: 文件或目录名”来指定,但必须每一项单独一行。

这就是前面说到的那两位朋友网站robots.txt的问题,他们用“Disallow: /”禁止了蜘蛛抓取根目录下的所有内容。

4、robots.txt需要注意的几个问题:

  • robots.txt文件中任意一行Disallow的值为空,其他指定的项都将失效,整站允许User-agent指定的蜘蛛抓取;

  • robots.txt文件中允许使用注释,以“#”开头的内容被认作注释;但注释最好独立成一行,尽量不要加在参数后面,如“Disallow: /admin/ #manage dir”,某些蜘蛛可能将注释当作值的一部分。

  • 尽量不要在一行的前面出现空格,如“  Disallow: /”,可能某些蜘蛛无法正确读取。

  • 推荐一个robots.txt检查工具:http://tool.motoricerca.info/robots-checker.phtml


5、将你的XML格式Sitemap地址放到robots.txt中

Robin新发现,并率先在国内提出的,大家可以到点石博客中下载Robin的“网站如何被高效索引”演讲稿阅读。

加入Sitemap地址的作用是,如果搜索引擎蜘蛛能够识别此行,就能快速获知网站的XML地图文件地址,并将地图文件作为一个URL参考进行高效索引(具体哪些搜索引擎蜘蛛能够识别目前我还不清楚)。

樂思蜀SEO博客的robots.txt,紧接着User-agent的第二行:
Sitemap: http://www.lesishu.com/sitemap.xml

此处之前的内容,将Sitemap放在第一行的说法错误,特此更正。

robots Meta标签

robots.txt是放在网站中,文件级的网络蜘蛛授权;而robots Meta标签是放在网页中,一般用于部分网页需要单独设置的情况下。两者的功能是一样的。

Meta robots标签必须放在<head>和</head>之间,格式:

<meta name="robots" content="index,follow" />

content中的值决定允许抓取的类型,必须同时包含两个值:是否允许索引(index)和是否跟踪链接(follow,也可以理解为是否允许沿着网页中的超级链接继续抓取)。共有4个参数可选,组成4个组合:

  1. index,follow:允许抓取本页,允许跟踪链接。

  2. index,nofollow:允许抓取本页,但禁止跟踪链接。

  3. noindex,follow:禁止抓取本页,但允许跟踪链接。

  4. noindex,nofllow:禁止抓取本页,同时禁止跟踪本页中的链接。


以上1和4还有另一种写法:

index,follow可以写成all,如:
<meta name="robots" content="all" />

noindex,nofollow可以写成none,如:
<meta name="robots" content="none" />

需要注意的是,robots Meta标签很多搜索引擎是不支持的,只有少数搜索引擎能够识别并按给定的值抓取。所以,尽可能的使用robots.txt文件来限制抓取。

最后,给大家一个建议,不要太刻意的在robots.txt中设置过多禁止文件或目录,只设置确实不希望被搜索引擎索引的目录和文件就可以了。

特别是在不清楚文件或目录的作用时,不要轻易禁止抓取。前阵一位做旅游的朋友,网站中有大量的旅游景点图片,几大搜索引擎中却都没有索引,后来对网站检查时发现图片目录upload在管理目录admin下,被robots.txt禁止抓取了。

虽然网上关于robots的文章已经很多了,发现都不尽全面,整理了一下供参考。

13 条评论:

koma 说...

说得很详细!以后robots问题解答就可直接访问

http://www.lesishu.cn/seo/robots/

不过纠正一个打字错误

”其次,文件名必须是大写,如Robots.txt是错误的。"

seocenter 说...

我查了一下,结果是http://www.lesishu.cn/robots.txt可以查到结果
Line 1 User-agent: *
Line 2 Sitemap: http://www.lesishu.cn/sitemap.xml
Line 3 Disallow: /wp-admin/
Line 4 Disallow: /sysinfo/
建议将Sitemap放在第一行位置,,,怎么还不“改正”呢???呵呵

樂思蜀 说...

To koma:

谢谢你的提醒, 已经改正过来了...

To seocenter:

经过使用几个检查工具检查, 参考其他资料, 这个说法是错误的, 已经在文中更正过来了...

toby 说...

各种情况都分析的很到位,支持`

小琳 说...

没怎么看懂.bs我吧

wuchunlin 说...

总结得还可以.收下了
谢谢大哥

gongjingmilan 说...

写的不错,收藏起来了.

尔縇 说...

robots可以写成这样吗?
User-agent:*
Disallow: /
Allow: /post

尔縇 说...

我看到谷歌的sitemap 是放在最后一行的!

樂思蜀 说...

Allow貌似不是都认的,最好不要这样写

迷失 说...

学习了。

天津居然之家 说...

分析得挺全面。

hao123 说...

如果不放这个文件对网站有没有影响?