Robots文件是我們與搜索引擎對話的最重要渠道。
( U8 V" U! G1 y l9 H3 F& n( W
: A5 d8 |9 I; R6 |: } 為什麼meta信息有這麼多種類,我們卻從來沒有在網頁上看到過它們呢?因為meta標籤的內容在瀏覽器上是不顯示的。絕大部分的meta信息是寫給搜索引擎看的,用於幫助搜索引擎判斷頁面的價值、重要性。
8 h& P: b' n1 |. J" [
5 K/ X! Y+ E7 q+ D6 W7 _2 b 作為網頁設計者和搜索引擎交流的一個重要渠道,各種meta標籤提供了從不同角度描述頁面的基礎信息,而機器人在訪問網頁時也會首先讀取這個部分。5 u9 A1 z1 B' l" w% s w
/ U" s0 B1 A9 Q* E' |2 x8 n9 q關於robots基礎閱讀:
/ T& B1 r$ i0 j% |1 |0 z' b1 P$ H9 N2 X& |8 w: \# r
絕大部分 spider 能夠識別的是以下幾種:' q: i! ?. f+ E& e. k" Q
( j1 _$ k8 j6 H0 U- }& P, G noindex -【頁面會被抓取,但在被google的後台系統分析完以後會被丟棄,不會進入google的索引排序,對用戶而言也就不會出現在搜索結果中】
. W$ ?+ N+ ~. r* I3 l: B3 v nofollow -【禁止googlebot追蹤頁面上的一切鏈接(阻止訪問)。(與meta級別的nofollow不同的是, link級別裡的nofollow只會阻止robot追蹤單條鏈接)】
8 G o) O. Z$ c! t5 Q$ d noarchive -【禁止在搜索結果中顯示該頁面的快照】) x! \, ^. u" T0 | _9 n7 j5 B
nosnippet -【禁止在搜索結果的網頁鏈接下顯示內容摘要,同時阻止搜索引擎產生該頁面的快照】2 O. i) |# [% |& N& N
noodp -【在搜索結果的頁面摘要部分屏蔽open directory project對該頁面的描述】) T y! ]2 n1 ?$ H6 [4 G+ b8 G. F
none -【等同於同時使用noindex和nofollow兩個參數】
" y, h6 `: ~! a" Z t/ X1 { robots文件的使用,有很多特別需要注意的,甚至很多知識點甚至搜索引擎本身都沒有給出詳盡的說明或者是使用方法。在參閱了大量的資料和結合自身的一些嘗試,本文將重點說明下,一些在對robots文件進行處理的過程中需要特別注意的潛規則:
% Y9 t* h7 F) h$ y5 C5 p2 o
8 d& o/ f" g7 a1 n一不允許出現多條user-agent的記錄
9 c. R. b/ c7 |7 Q5 ?$ c7 A. }% B9 p: f0 x; O* f, _
一份「/robots.txt」文檔中不允許出現多條包含「user-agent: *」的記錄(但允許沒有此記錄)。" c2 c* `3 A9 k8 ?1 b, B
2 ^, F& _" G) ^% Y; U: U( B2 W二- spider名字的大小寫問題+ a* N0 B2 l/ n2 c! U1 Y# Q% k; Y$ O, I
# Q* b' ^9 D* C$ k9 Q# Z" Y. p5 l9 `1 X' X
大多數搜索引擎的spider在讀取user-agent值的時候都是忽略大小寫,既Googlebot和googlebot應該都能被google識別。但是,我在學習淘寶seo的時候也發現,或許為了保險起見,淘寶的工作人員在自己的「/robots.txt」裡面分別寫了「user-agent: baiduspider」和「user-agent: baiduspider」兩條。(參見:. m; E v, f3 ^5 W
http://www.taobao.com/robots.txt)
# w, y% n8 T6 e8 y. E: X$ Z8 X5 D% B3 a6 N
三、allow和disallow的順序
1 s" q1 ]; q g- ]% f- F$ x1 _% Q
4 }: N4 q5 Z* j G8 v' d' h# } 大部分情況下,想要兼容所有的機器人,就應當將allow指令放在disallow指令的前面,例如:4 |" {; k( B2 }2 K2 C0 A& v! E2 j
! G+ q' u* l6 I5 {0 l3 B c( t8 L- WAllow: /a/b.html& `8 h1 t7 i( _; x# Z0 Q& K
Disallow: /a/8 W+ P! n/ R) j' e1 L! n
/ {( C2 k8 g0 x9 C 這會阻止對"/a/"內除了"/a/b.html"以外一切內容的檢索,因為後者是優先匹配成功的。雖然對於google和百度來說,先後順序並不重要。但是不排除會導致其他搜索引擎出現抓取問題。
) ]3 ^5 t" E% I& O# f
) A% ^& R* d- x$ H; r四、allow與disallow的角力) V7 N4 D7 p6 D
& t5 }8 h' R0 S. W4 a# X5 m1 Z
如果allow指令中的地址同disallow指令中的地址相比具有相同或更多字符(意味著allow指令所描述的地址更「深」、更「具體」)的話,雖然disallow指令也能匹配,但allow指令仍然會「獲勝」(這樣就達到開放子文件夾的目的了,同時沒被allow的部分依然不會被檢索)。
6 n' F, G# `$ P b% `" ]; ~, m8 B& i! \$ |! _+ V! t. L. q
五、反斜槓「/」的意義
, U; e. T1 {8 k# C$ u/ k
' R% q; i) Q6 n5 m" G- |* u 反斜槓「/」表示禁止搜索引擎進入該目錄。
3 ?1 y1 l! V7 |0 d4 m' E; X# m
5 ^5 i( b, g7 Z" n' j- f) cUser-agent: spider
% W. ~0 k0 T8 ~! Z) a# v# O' WDisallow: /a+ ]$ T( E7 R( E$ i% C
; H: i: O5 H0 Z' z2 c5 B, o 對這樣的記錄機器人該怎麼反應?按照res標準,機器人會將名為「a」的文件和名為「a」的目錄都disallow。當然,比較符合邏輯切清晰的寫法是使用「/」來標識所聲明的路徑:! r5 D: o! |8 x' P
3 a0 r5 M: I; @* l3 k. g: x
Disallow: /a/
, R8 I# e0 o- r. H2 `; [9 f( {6 ]5 @/ ]
注意不要忘記「a」前面的「/」2 C1 H$ |) Y9 w
5 b3 r- P, P2 K( Z) V. Z六、在指示行末尾加注的問題5 k+ i. Z) `8 S! S- t
/ i0 n% L% M! L5 n& G9 Q7 e 在「/robots.txt」文件中,凡以「#」開頭的行,均被視為註解內容,這和unix中的慣例是一樣的。例如:' _7 J! u0 T8 b, Y
* Z. y) l, Q: l }% ], K2 t; u
Disallow: /cgi-bin/ # this bans robots from our cgi-bin; N& l- `; g) k/ \$ O
5 O' c# p. i+ Y
七、盡量不要在一行的前面出現空格,如「 disallow: /」《很多人非常不小心,空格就沒了》
$ C8 w; m, h0 ~6 ]8 h3 I+ |$ C& Q* K
Res標準並未對這種格式予以特別說明,但和上面一個問題一樣,可能導致某些機器人無法正確解讀。
9 p" n8 b T1 X7 O+ I. i
* p# V, P! `! d6 s0 R八.文件目錄區分大小寫(這個或許是困惑大多數人的)
4 h$ w, b2 g; }, z" @" O7 J) q; w) ]2 Y" T8 }
雖然res標準忽略大小寫(case insensitive),但目錄和文件名卻是大小寫敏感的。所以對於"user-agent"和"disallow"指令,用大小寫都是可以的。但對於所聲明的目錄或文件名卻一定要注意大小寫的問題。例如:4 U" j: r, F% E" p
7 F: H- F3 T' J. B
Disallow: /abc.htm5 Z( ~& C3 S/ ~
會攔截「http://www.example.com/abc.htm」
# z" x$ v7 f3 F 卻會允許http://www.example.com/Abc.htm
$ @7 o* w2 B. Q
, I7 P- f7 J9 O8 E0 Q' k6 A 所以在IIS服務器可能出現的 諸多 大小寫目錄問題,可以通過此方法得到圓滿解決。
5 [$ o* F' \2 s M, O7 _
1 a% @& h4 v$ N1 r* ?6 Y( b* V九、如果頁面中包含了多個同類型meta標籤,spider會累加內容取值
2 _5 d Y4 |( e, b/ c0 L' E1 C5 B H/ K8 k' u" x1 Q1 \7 p/ s
對於下面兩條語句來說:: C# n% }' v5 C8 \( K( Y: l
<meta name="robots" content="noindex" />
) e3 ~$ P0 P; p I- Y<meta name="robots" content="nofollow" />
?( P+ p; k6 N; y" j7 B: R7 c0 |: p) v) w/ y& ^. v2 c& K
搜索引擎將會理解成:* n9 u) e, r9 `# k6 S0 a8 C
<meta name="robots" content="noindex, nofollow" />; k" q/ i \' I/ `: ~9 {
: }/ E/ \ K" r/ H2 T( y
十當內容取值衝突的時候,google和百度等大多數搜索引擎會採納限制性最強的參數6 I$ s$ h) T! [7 ?- P9 u# `* k U
! y! r" T$ e! n4 V9 e% r& R
例如,如果頁面中包含如下meta標籤:
) n2 J+ z2 N6 M" z<meta name="robots" content="noindex" />+ x @: \, u- y: `0 S! W' U$ c
<meta name="robots" content="index" />
3 E/ b" N3 G4 ^! X Spider會服從noindex的取值。
. P& q7 C! _* q& }1 U
. L+ h4 E% O3 s2 ?8 y% V. F十一.如果你既用了robots.txt文件又用了robots meta標籤: m; g# @8 v7 L
1 O9 b4 g9 c/ [% h* B. c1 X
當二者出現衝突,googlebot會服從其中限制較嚴的規則
; g9 N4 p* t& p2 Q- Y! z0 @+ c3 ` D6 y; T
如果你在robots.txt中阻止了對一個頁面的檢索,googlebot永遠不會爬到這個頁面,因此也根本不會讀到這個頁面上的meta標籤。 如果你在robots.txt裡面允許了對一個頁面的檢索,卻在meta標籤中禁止了這一行為,googlebot會到達這個頁面,在讀到meta標籤後終止進一步的檢索行為。) u3 P, P$ {0 g0 n# ]
/ y/ w# a. m2 v; M7 f
當然關於robots文件的使用,還有更多等待大家的挖掘和分享。4 c# `$ c3 I, W$ T5 Y; w
% i2 V) g5 A8 _7 ?$ p! i* P
5 H. f. f5 X7 P' W7 Y0 E0 e( C
|