|
管理员

|
楼主
大 中
小 发表于 2007-1-10 16:41 只看该作者
Robots.txt指南
当搜索引擎访问一个网站时,它首先会检查该网站的根域下是否有一个叫做robots.txt的纯文本文件。Robots.txt文件用于限定搜索引擎对其网站的访问范围,即告诉搜索引擎网站中哪些文件是允许它进行检索(下载)的。这就是大家在网络上常看到的“拒绝Robots访问标准”(Robots Exclusion Standard)。下面我们简称RES。 1 J- X& y3 W; P: t
Robots.txt文件的格式: ) v4 f$ D0 F( k& y6 G0 l1 H# m, b/ h
Robots.txt文件的格式比较特殊,它由记录组成。这些记录通过空行分开。其中每条记录均由两个域组成: , g5 [* c" Y6 O: o
1) 一个User-Agent(用户代理)字符串行; ; h Z9 A4 {1 A
2) 若干Disallow字符串行。
9 t) S: u7 S' K 记录格式为: “:“
9 |$ |& ]+ E& K. r6 `( Y) Z# r. `SCM Life 下面我们分别对这两个域做进一步说明。 bbs.scmlife.com* W7 c* h# V/ q2 t
User-agent(用户代理):
, G3 @# g3 ?' O, h, ?SCM Life User-agent行(用户代理行) 用于指定搜索引擎robot的名字,以Google的检索程序Googlebot为例,有:User-agent: Googlebot
5 h6 h; q8 q0 u& ~+ a# x% }' L7 i" }配置管理|SCM|需求管理|方法论|RUP|ISO|构建管理|发布管理|测试管理|质量管理|实施|ClearCase认证|ClearQuest认证|配置管理培训|需求管理培训 一个robots.txt中至少要有一条User-agent记录。如果有多条User-agent记录,则说明有多个robot会受到RES标准的限制。当然了,如果要指定所有的robot,只需用一个通配符“*“就搞定了,即:User-agent: * 7 a; s5 c; Q9 y- C
Disallow(拒绝访问声明): 6 o& z( P' J" x5 A. J7 {3 s; T* ]/ G. T
在Robots.txt文件中,每条记录的第二个域是Disallow:指令行。这些Disallow行声明了该网站中不希望被访问的文件和(或)目录。例如“Disallow: email.htm“对文件的访问进行了声明,禁止Spiders下载网站上的email.htm文件。而“Disallow: /cgi-bin/“则对cgi-bin目录的访问进行了声明,拒绝Spiders进入该目录及其子目录。Disallow声明行还具有通配符功能。例如上例中“Disallow: /cgi-bin/“声明了拒绝搜索引擎对cgi-bin目录及其子目录的访问,而“Disallow:/bob“则拒绝搜索引擎对/bob.html和/bob/indes.html的访问(即无论是名为bob的文件还是名为bob的目录下的文件都不允许搜索引擎访问)。Disallow记录如果留空,则说明该网站的所有部分都向搜索引擎开放。
2 \* f+ w% p1 }8 I; K- s9 D: @$ _ClearCase,CC,ClearQuest,CQ,Software Configuration Management, SCM,SQA, 配置管理,论坛,需求管理,测试管理,质量管理,Rational RUP,CVS,Perl,command,hook,VBScript,脚本,SourceSafe,VSS,linux+ClearCase,Windows+ClearCase,资料,安装,下载,备份空格 & 注释 bbs.scmlife.com, ^% h! Q6 A) w4 M, E
在robots.txt文件中,凡以“#“开头的行,均被视为注解内容,这和UNIX中的惯例是一样的。但大家需要注意两个问题:
( t4 i; ?- l0 F7 BSCM Life 1) RES标准允许将注解内容放在指示行的末尾,但这种格式并不是所有的Spiders都能够支持。譬如,并不是所有的Spiders都能够正确理解“Disallow: bob #comment“这样一条指令。有的Spiders就会误解为Disallow的是“bob#comment“。最好的办法是使注解自成一行。 . p: D6 b' G# N$ S
2) RES标准允许在一个指令行的开头存在空格,象“Disallow: bob #comment“,但我们也并不建议大家这么做。 8 J, S. k4 f; |# u" P4 G( |
Robots.txt文件的创建: 配置管理|SCM|需求管理|方法论|RUP|ISO|构建管理|发布管理|测试管理|质量管理|实施|ClearCase认证|ClearQuest认证|配置管理培训|需求管理培训1 m1 n( _7 F+ S/ u
需要注意的是,应当在UNIX命令行终端模式下创建Robots.txt纯文本文件。好的文本编辑器一般都能够提供UNIX模式功能,或者你的FTP客户端软件也“应该”能够替你转换过来。如果你试图用一个没有提供文本编辑模式的HTML编辑器来生成你的robots.txt纯文本文件,那你可就是瞎子打蚊子——白费力气了。
- u2 C+ S( v) Q+ p! hClearCase,CC,ClearQuest,CQ,Software Configuration Management, SCM,SQA, 配置管理,论坛,需求管理,测试管理,质量管理,Rational RUP,CVS,Perl,command,hook,VBScript,脚本,SourceSafe,VSS,linux+ClearCase,Windows+ClearCase,资料,安装,下载,备份对RES标准的扩展: SCM Life4 g. {1 m* k# D5 p. E& J( V" E
尽管已经提出了一些扩展标准,如Allow行或Robot版本控制(例如应该忽略大小写和版本号),但尚未得到RES工作组的正式批准认可。 SCM Life+ K; l. M+ j6 L3 N
附录I. Robots.txt用法举例:
! ]8 B" _/ w( N8 U 使用通配符“*“,可设置对所有robot的访问权限。 ClearCase,CC,ClearQuest,CQ,Software Configuration Management, SCM,SQA, 配置管理,论坛,需求管理,测试管理,质量管理,Rational RUP,CVS,Perl,command,hook,VBScript,脚本,SourceSafe,VSS,linux+ClearCase,Windows+ClearCase,资料,安装,下载,备份# Q( A" c! M8 ?9 u5 K
User-agent: *
& ~" i/ d0 `" q A配置管理|SCM|需求管理|方法论|RUP|ISO|构建管理|发布管理|测试管理|质量管理|实施|ClearCase认证|ClearQuest认证|配置管理培训|需求管理培训 Disallow:
- s6 f* h; l8 k) Z! P0 B配置管理|SCM|需求管理|方法论|RUP|ISO|构建管理|发布管理|测试管理|质量管理|实施|ClearCase认证|ClearQuest认证|配置管理培训|需求管理培训 表明:允许所有搜索引擎访问网站下的所有内容。
& v: E: @. [' Q配置管理|SCM|需求管理|方法论|RUP|ISO|构建管理|发布管理|测试管理|质量管理|实施|ClearCase认证|ClearQuest认证|配置管理培训|需求管理培训 User-agent: *
* R4 G2 P1 `' T; [ Disallow: /
4 ?% w( x: |' u4 @, I 表明:禁止所有搜索引擎对网站下所有网页的访问。 : V4 U* v& m4 b5 T8 \" Y2 [
User-agent: * E/ {! ^5 [, I
Disallow: /cgi-bin/Disallow: /images/ SCM Life8 Y5 L' ? f1 ?) b! B! F9 p7 Q
表明:禁止所有搜索引擎进入网站的cgi-bin和images目录及其下所有子目录。需要注意的是对每一个目录必须分开声明。 配置管理|SCM|需求管理|方法论|RUP|ISO|构建管理|发布管理|测试管理|质量管理|实施|ClearCase认证|ClearQuest认证|配置管理培训|需求管理培训$ c' g8 O2 k- \' c5 d
User-agent: Roverdog
' Q' @! j4 G! z! S Disallow: /
: O# U9 E' c0 `# pSCM Life 表明:禁止Roverdog访问网站上的任何文件。 bbs.scmlife.com& Y% w" I8 _ K+ Q! q
User-agent: Googlebot 配置管理|SCM|需求管理|方法论|RUP|ISO|构建管理|发布管理|测试管理|质量管理|实施|ClearCase认证|ClearQuest认证|配置管理培训|需求管理培训: P" J, C3 E& A7 _* O/ U/ j
Disallow: cheese.htm
5 {5 c6 o b; ^0 mbbs.scmlife.com 表明:禁止Google的Googlebot访问其网站下的cheese.htm文件。
6 E$ L A) V! q/ r. o8 l配置管理|SCM|需求管理|方法论|RUP|ISO|构建管理|发布管理|测试管理|质量管理|实施|ClearCase认证|ClearQuest认证|配置管理培训|需求管理培训 上面介绍了一些简单的设置,对于比较复杂的设置,可参看一些大型站点如CNN或Looksmart的robots.txt文件( www.cnn.com/robots.txt www.looksmart.com/robots.txt)7 m" h0 P3 q0 j0 [, D
附录II. 相关robots.txt文章参考:
1 s2 P8 i# ^4 x! A3 }SCM Life 1. Robots.txt常见问题解析
! j9 W: k, y9 t/ n3 S4 }% m 2. Robots Meta Tag的使用
$ I! B P" v* n5 w7 D7 ]; Q/ o: Ibbs.scmlife.com 3. Robots.txt检测程序 ClearCase,CC,ClearQuest,CQ,Software Configuration Management, SCM,SQA, 配置管理,论坛,需求管理,测试管理,质量管理,Rational RUP,CVS,Perl,command,hook,VBScript,脚本,SourceSafe,VSS,linux+ClearCase,Windows+ClearCase,资料,安装,下载,备份. \$ o) h; K9 Q0 [9 ^$ j
Robots.txt常见问题解析:
+ t0 ?% E2 X; z8 S6 } 我们开发了一个针对robots.txt文件的“验检程序”,同时又设计了一个搜索程序,专门下载robots.txt文件,以此对新推出的这个“robots.txt验检程序”进行测试。在对DMOZ(ODP)中所链接的站点进行遍历,共计检索240万个站点后,我们总共找到了大概75k的robots.txt文件。 $ l: h: R) E) d" b: m" _0 D$ i
在这些robots.txt文件中,我们发现了大量的而且是形形色色的问题。有超过5%的robots.txt文件使用了错误格式,有超过2%的文件由于使用的是极其拙劣的格式而导致无法为任何SPIDER读取。我们将发现的一些问题在下面列出来供大家参考借鉴: 2 d9 v* i, ]* E0 V+ L
错误1—语法混用 SCM Life& l8 o( e9 u4 H4 @
例如: ClearCase,CC,ClearQuest,CQ,Software Configuration Management, SCM,SQA, 配置管理,论坛,需求管理,测试管理,质量管理,Rational RUP,CVS,Perl,command,hook,VBScript,脚本,SourceSafe,VSS,linux+ClearCase,Windows+ClearCase,资料,安装,下载,备份1 ^+ u1 x4 ?1 u& M
User-agent: * ) p1 `; k; ]( R% B% U. ^
Disallow: scooter 9 i/ w2 `2 g( n. G
正确语法应为:
' `$ J+ N! w2 z# ?; k( E( I, u* {! Ibbs.scmlife.com User-agent: scooter
5 J( I: G+ S9 b& t/ | Disallow: *
% W3 W1 Q7 {9 \( N/ Lbbs.scmlife.com错误2—一行Disallow声明多个目录
- C* `% L V$ {8 |) u/ R- T4 {* [: k 这是一个比较常见的错误。我们发现很多网站在其robots.txt中,在一个Disallow指令行中放入了多个目录。譬如:Disallow: /css/ /cgi-bin/images/ 4 d' |" I3 j' i0 u# ]! S
绝大多数的spiders对上述声明行都无法做出正确的解析,有些Spiders会忽略其空格而解析为/css//cgi-bin//images/,或只解析/images/或/css/,或者根本不予解析。
( e, b7 W* q3 }4 O5 j$ j! O3 W/ x. e配置管理|SCM|需求管理|方法论|RUP|ISO|构建管理|发布管理|测试管理|质量管理|实施|ClearCase认证|ClearQuest认证|配置管理培训|需求管理培训正确的语法应为:
! C' l! [# w+ \1 R4 [ClearCase,CC,ClearQuest,CQ,Software Configuration Management, SCM,SQA, 配置管理,论坛,需求管理,测试管理,质量管理,Rational RUP,CVS,Perl,command,hook,VBScript,脚本,SourceSafe,VSS,linux+ClearCase,Windows+ClearCase,资料,安装,下载,备份 Disallow: /css/
" q) R+ C! R7 H, E Disallow: /cgi-bin/
8 l& Q" v/ H3 f' N配置管理|SCM|需求管理|方法论|RUP|ISO|构建管理|发布管理|测试管理|质量管理|实施|ClearCase认证|ClearQuest认证|配置管理培训|需求管理培训 Disallow: /images/ bbs.scmlife.com& ^4 P& O5 q6 O( c
错误3—在DOS模式下编辑robots.txt文件
9 b; [) M& N4 W) P8 M' j( ?配置管理|SCM|需求管理|方法论|RUP|ISO|构建管理|发布管理|测试管理|质量管理|实施|ClearCase认证|ClearQuest认证|配置管理培训|需求管理培训 这也是一个比较常见的错误。正确的做法应该是在UNIX模式下编辑你的robots.txt文件并以ASCII码格式上传。显然并非所有的FTP客户端软件都能够天衣无缝地将文件格式转换为UNIX命令行终端,所以在编辑robots.txt文件时,一定要确保你的文本编辑器是在UNIX模式下。 ; U3 K2 J& X" S$ C0 i3 m
错误4—在指示行末尾加注
D6 U9 V1 z" g% @SCM Life 在robots.txt文件中,凡以“#“开头的行,均被视为注解内容,这和UNIX中的惯例是一样的。例如:Disallow: /cgi-bin/ # this bans robots from our cgi-bin
- @, O3 M6 F; ?) x0 x. Z' n7 y' kClearCase,CC,ClearQuest,CQ,Software Configuration Management, SCM,SQA, 配置管理,论坛,需求管理,测试管理,质量管理,Rational RUP,CVS,Perl,command,hook,VBScript,脚本,SourceSafe,VSS,linux+ClearCase,Windows+ClearCase,资料,安装,下载,备份 虽然根据RES标准,在指示行的末尾加注是可行的,但这种格式在过去却并非所有的Spiders都能够支持,有些Spiders干脆就把整个句子视为注解内容直接跳过去不读。当然我们知道现如今搜索引擎基本上都能够支持这种格式,不过—仍有可能无法被某些搜索引擎正确解读,你冒得起这个险吗?我们建议在编辑robots.txt文件时,最好让注解自成一行。 $ o2 M1 A" g+ u; ~4 s9 v( X: }% K
错误5—指令行前有空格
; O1 L+ g7 T9 n K* r配置管理|SCM|需求管理|方法论|RUP|ISO|构建管理|发布管理|测试管理|质量管理|实施|ClearCase认证|ClearQuest认证|配置管理培训|需求管理培训 例如“Disallow: /cgi-bin/“,虽然RES标准并未对这种格式予以特别说明,但我们对这种格式是持极力反对态度的。同样的问题摆在你面前你冒得起无法被Spiders正确解读的险吗? 配置管理|SCM|需求管理|方法论|RUP|ISO|构建管理|发布管理|测试管理|质量管理|实施|ClearCase认证|ClearQuest认证|配置管理培训|需求管理培训9 y* e" J* |, j* g! v% K
错误6--404重定向至另一页面
, x* a* `0 i* d6 x) [ 一般没有robots.txt的网站会将对robots.txt文件的调用请求转至另一页面。这种重定向通常不会产生服务器状态错误或重定向状态信息。然而因为是Spiders自己决定它看到的是robots.txt文件还是一个.html文件。虽然理论上应该不会有什么问题,不过为了保险起见,不妨在你服务器的顶级目录下放一个空的robots.txt文件。在 www.google.com/bot.html下,也提供了相同的建议—“如欲避免网络服务器日志中的出错信息‘找不到文件’,可在其根域下创建一个空的robots.txt文件。” 9 I8 ]$ O5 B o) z2 e) B7 s; c
错误7—声明自相矛盾
: L$ P5 O' c' X7 G% m* ~+ |& c LClearCase,CC,ClearQuest,CQ,Software Configuration Management, SCM,SQA, 配置管理,论坛,需求管理,测试管理,质量管理,Rational RUP,CVS,Perl,command,hook,VBScript,脚本,SourceSafe,VSS,linux+ClearCase,Windows+ClearCase,资料,安装,下载,备份 例如:
$ `. G# p1 M3 l1 x+ m USER-AGENT: EXCITE 8 ]; S0 K" l: t! ]. o3 L
DISALLOW:
. Z A/ v; e' s5 F& NSCM Life 虽然RES标准忽略大小写(Case Sensitive),但目录和文件名却是大小写敏感的。所以对于“USER-AGENT“和“DISALLOW“指令,用大小写都是可以的。但对于所声明的目录或文件名却一定要注意大小写的问题。 bbs.scmlife.com" a$ `) g1 ]% _9 D R$ M: W* v# C
错误8—列出所有文件 SCM Life" m* R' v7 J( k3 w) F) S, D. G {
这也是一种常见错误,不厌其烦地将目录下文件全数列出。例如:
6 ], C: W' ]' |! N) }/ [bbs.scmlife.com Disallow: /AL/Alabama.html
& P# q) B2 _3 K/ W; a2 D- `( QClearCase,CC,ClearQuest,CQ,Software Configuration Management, SCM,SQA, 配置管理,论坛,需求管理,测试管理,质量管理,Rational RUP,CVS,Perl,command,hook,VBScript,脚本,SourceSafe,VSS,linux+ClearCase,Windows+ClearCase,资料,安装,下载,备份 Disallow: /AL/AR.html bbs.scmlife.com% E" `. W4 F& x$ }8 x! p- ] f( s! S3 m
Disallow: /Az/AZ.html SCM Life) R5 Q& T* z& i3 N1 P7 [5 T" i
Disallow: /Az/bali.html
, q( W# x# Z+ E! g3 kSCM Life Disallow: /Az/bed-breakfast.html
7 y/ S# |" i' \0 U配置管理|SCM|需求管理|方法论|RUP|ISO|构建管理|发布管理|测试管理|质量管理|实施|ClearCase认证|ClearQuest认证|配置管理培训|需求管理培训 其实,上面这么多声明行只需用目录选项来替代:
2 h+ z6 Z" U# w0 t3 P* Z4 @SCM Life Disallow: /AL
/ k* }. c* I- R# z3 ]! _ClearCase,CC,ClearQuest,CQ,Software Configuration Management, SCM,SQA, 配置管理,论坛,需求管理,测试管理,质量管理,Rational RUP,CVS,Perl,command,hook,VBScript,脚本,SourceSafe,VSS,linux+ClearCase,Windows+ClearCase,资料,安装,下载,备份 Disallow: /Az / m. D! f3 M5 ?( E
需要注意的是:反斜杠“/“表示禁止搜索引擎进入该目录。如果只有几十个文件需要设置访问权限,那倒也无可厚非。问题是我们发现有一个robots.txt文件中列出了有400k,多达4000个文件。我们只是纳闷看到这么多声明,有多少Spiders会掉头而去。
z( L8 k# P/ v' P0 q错误9—自创ALLOW指令
* t+ b- G z6 Z/ {9 v! s 没有ALLOW指令,只有DISALLOW指令!我们发现有这样的用法: 配置管理|SCM|需求管理|方法论|RUP|ISO|构建管理|发布管理|测试管理|质量管理|实施|ClearCase认证|ClearQuest认证|配置管理培训|需求管理培训9 b3 z- Y! L; u0 M
User-agent: Spot
% ]. k+ \: ^8 W& g$ h: W配置管理|SCM|需求管理|方法论|RUP|ISO|构建管理|发布管理|测试管理|质量管理|实施|ClearCase认证|ClearQuest认证|配置管理培训|需求管理培训 Disallow: /john/
8 V) M2 e: K6 d2 B+ Z allow: /jane/ * i+ Q: O7 C* @# d/ J, ~
正确写法应为: 5 ?' i# h8 L$ B; @9 h
User-agent: Spot
- T9 c" b6 @- u+ A' r1 `, D配置管理|SCM|需求管理|方法论|RUP|ISO|构建管理|发布管理|测试管理|质量管理|实施|ClearCase认证|ClearQuest认证|配置管理培训|需求管理培训 Disallow: /john/
/ r* l9 U+ J8 a; X* W3 P Disallow:
8 k4 R8 d' W5 BSCM Life错误10—对声明的目录无反斜杠标识 SCM Life- Z6 g4 G3 O" \- M
例如我们发现有这样的例子: 配置管理|SCM|需求管理|方法论|RUP|ISO|构建管理|发布管理|测试管理|质量管理|实施|ClearCase认证|ClearQuest认证|配置管理培训|需求管理培训% h$ Z/ S Y- }! v
User-agent: Spot
# U* m8 `5 X$ L0 B: y2 W Disallow: john ClearCase,CC,ClearQuest,CQ,Software Configuration Management, SCM,SQA, 配置管理,论坛,需求管理,测试管理,质量管理,Rational RUP,CVS,Perl,command,hook,VBScript,脚本,SourceSafe,VSS,linux+ClearCase,Windows+ClearCase,资料,安装,下载,备份) D6 P) n5 f" }5 Y: o7 W
对这样的记录Spider该怎么反应?按照RES标准,Spider会将名为“john“的文件和名为“john“的目录都DISALLOW。所以要记得使用“/“来标识所声明的路径(目录)。 ClearCase,CC,ClearQuest,CQ,Software Configuration Management, SCM,SQA, 配置管理,论坛,需求管理,测试管理,质量管理,Rational RUP,CVS,Perl,command,hook,VBScript,脚本,SourceSafe,VSS,linux+ClearCase,Windows+ClearCase,资料,安装,下载,备份$ D0 h" z! j0 L1 r" G7 n6 f
我们还发现,有些网站的优化工作做得真彻底,竟然在其robots.txt中也放了关键词(费解,不明白他们怎么想的)。这些人一定是把他们的robots.txt纯文本文件当作是html文件了。(要记住:在FrontPage下是不可能正确创建robots.txt文件的)
. u$ r6 ^' k* G; y S) K6 f错误11—网络服务器端的错误配置 ( ~7 r$ O. G! N0 X6 Z1 V! {' v
为什么对robots.txt文件的调用请求会产生一个二进制文件?只有网络服务器或FTP客户端软件错误设置的情况下才可能发生这种错误。建议大家定期检查自己的robots.txt文件( http://www.mydomain.com/robots.txt)。 ClearCase,CC,ClearQuest,CQ,Software Configuration Management, SCM,SQA, 配置管理,论坛,需求管理,测试管理,质量管理,Rational RUP,CVS,Perl,command,hook,VBScript,脚本,SourceSafe,VSS,linux+ClearCase,Windows+ClearCase,资料,安装,下载,备份! I! _$ I- f7 }0 M: e
服务器/域名“农场” SCM Life6 d& w0 ~4 S- A7 j Y
搜索引擎检测服务器或域名“农场”(即包含巨量站点)的一个简单途径是看它们的robots.txt。我们发现规模在400到500个域名的大型域名“农场”,其“库”内站点使用都是同一个robots.txt文件。这也就相当于告诉搜索引擎这些使用同一robots.txt文件的站点是相关联的。 bbs.scmlife.com8 a. S) F1 K3 S' [$ ?+ L: }
Google率先支持通配符:
: E: j& ~6 J. Y3 b+ ? Google是第一家能够支持robots.txt中通配符文件扩展名的搜索引擎。例如:
1 Y& T% r+ {. r+ o8 ?* V2 x" a2 ? User-agent: googlebot
0 B& o! u+ D2 x- u2 C4 K& h V配置管理|SCM|需求管理|方法论|RUP|ISO|构建管理|发布管理|测试管理|质量管理|实施|ClearCase认证|ClearQuest认证|配置管理培训|需求管理培训 Disallow: *.cgi , K4 l4 L4 N' _$ A5 P
不过注意了,由于目前只有Google能够支持这种格式,所以”USER-AGENT”只能是“Googlebot”。
© 本文为 懂你 与 SCMLife 共同所有,未经同意,请勿转载 ©如该文侵犯了您的版权,请联系 管理员。
优惠购买Rational,Telelogic,Hansky产品,企业VIP服务、实施
VIP服务电话:13581809377
|