自動外鏈工具 在線排版工具 搜索引擎提交入口 wordpress主題推薦 批量打開網址工具 【老域名購買】 思享SEO導航 【網站合作】

你真的完全懂了robots嗎?

1262
文章目錄
  1. meta標簽中的robots
  2. robots文件潛規則

文章出自光年論壇pollux(劉總)整理的【搜索引擎不會告訴你的關于robots的潛規則】,正好最近在碰到了robots的問題,覺得文章非常有價值就轉載給大家。

robots協議

 

meta標簽中的robots

在所有meta標簽中,專門有一類是指導機器人如何處理抓取后的頁面,如何追蹤頁面上的鏈接的。描述這種信息的meta標簽被稱為robotsmeta標簽(robots meta tag),它就是本文的主角。

Robots文件是我們與搜索引擎對話的最重要渠道。

為什么meta信息有這么多種類,我們卻從來沒有在網頁上看到過它們呢?因為meta標簽的內容在瀏覽器上是不顯示的。絕大部分的meta信息是寫給搜索引擎看的,用于幫助搜索引擎判斷頁面的價值、重要性。

作為網頁設計者和搜索引擎交流的一個重要渠道,各種meta標簽提供了從不同角度描述頁面的基礎信息,而機器人在訪問網頁時也會首先讀取這個部分。

關于robots基礎閱讀:

http://www.baidu.com/search/robots.html
http://www.robotstxt.org/robotstxt.html
http://www.google.com/support/webmasters/bin/answer.py?Hl=cn&answer=156449

絕大部分 spider 能夠識別的是以下幾種:

  • noindex -【頁面會被抓取,但在被google的后臺系統分析完以后會被丟棄,不會進入google的索引排序,對用戶而言也就不會出現在搜索結果中】
  • nofollow -【禁止googlebot追蹤頁面上的一切鏈接(阻止訪問)。(與meta級別的nofollow不同的是, link級別里的nofollow只會阻止robot追蹤單條鏈接)】
  • noarchive -【禁止在搜索結果中顯示該頁面的快照】
  • nosnippet -【禁止在搜索結果的網頁鏈接下顯示內容摘要,同時阻止搜索引擎產生該頁面的快照】
  • noodp -【在搜索結果的頁面摘要部分屏蔽open directory project對該頁面的描述】
  • none -【等同于同時使用noindex和nofollow兩個參數】

robots文件的使用,有很多特別需要注意的,甚至很多知識點甚至搜索引擎本身都沒有給出詳盡的說明或者是使用方法。在參閱了大量的資料和結合自身的一些嘗試,本文將重點說明下,一些在對robots文件進行處理的過程中需要特別注意的潛規則。

robots文件潛規則

不允許出現多條user-agent的記錄

一份“/robots.txt”文檔中不允許出現多條包含“user-agent: *”的記錄(但允許沒有此記錄)。

spider名字的大小寫問題

大多數搜索引擎的spider在讀取user-agent值的時候都是忽略大小寫,既Googlebot和googlebot應該都能被google識別。但是,我在學習淘寶seo的時候也發現,或許為了保險起見,淘寶的工作人員在自己的“/robots.txt”里面分別寫了“user-agent: baiduspider”和“user-agent: baiduspider”兩條。(參見:http://www.taobao.com/robots.txt)

allow和disallow的順序

大部分情況下,想要兼容所有的機器人,就應當將allow指令放在disallow指令的前面,例如:

Allow: /a/b.html

Disallow: /a/

這會阻止對”/a/”內除了”/a/b.html”以外一切內容的檢索,因為后者是優先匹配成功的。雖然對于google和百度來說,先后順序并不重要。但是不排除會導致其他搜索引擎出現抓取問題。

allow與disallow的角力

如果allow指令中的地址同disallow指令中的地址相比具有相同或更多字符(意味著allow指令所描述的地址更“深”、更“具體”)的話,雖然disallow指令也能匹配,但allow指令仍然會“獲勝”(這樣就達到開放子文件夾的目的了,同時沒被allow的部分依然不會被檢索)。

舉個例子吧(假設和順序無關)

Disallow:/a/b

Allow:/a

這樣就是允許除b以外的所有a

Disallow:/a

Allow:/a/b

這樣就是禁止除b以外的所有a

反斜杠“/”的意義

反斜杠“/”表示禁止搜索引擎進入該目錄。

User-agent: spider

Disallow: /a

對這樣的記錄機器人該怎么反應?按照res標準,機器人會將名為“a”的文件和名為“a”的目錄都disallow。當然,比較符合邏輯切清晰的寫法是使用“/”來標識所聲明的路徑:

Disallow: /a/

注意不要忘記“a”前面的“/”

根據“/”的意義,對于只允許某搜索引擎,有些robots.txt會這樣寫

User-agent: Baiduspider

Disallow:

User-agent: *

Disallow: /

這樣用百度的robots工具測試也是OK的,但從百度自家產品,百度知道的robots來看,更多的是寫成

User-agent: Baiduspider

Allow: ?/

User-agent: *

Disallow: /

我其實在想,或許“/”正確的表述應該是"進入該目錄"的意思,要不然Allow: ?/就不好理解了

在指示行末尾加注的問題

在“/robots.txt”文件中,凡以“#”開頭的行,均被視為注解內容,這和unix中的慣例是一樣的。例如:

Disallow: /cgi-bin/ # this bans robots from our cgi-bin

盡量不要在一行的前面出現空格

如“ disallow: /”《很多人非常不小心,空格就沒了》

Res標準并未對這種格式予以特別說明,但和上面一個問題一樣,可能導致某些機器人無法正確解讀。

文件目錄區分大小寫(這個或許是困惑大多數人的)

雖然res標準忽略大小寫(case insensitive),但目錄和文件名卻是大小寫敏感的。所以對于”user-agent”和”disallow”指令,用大小寫都是可以的。但對于所聲明的目錄或文件名卻一定要注意大小寫的問題。例如:

Disallow: /abc.htm

會攔截“http://www.example.com/abc.htm”

卻會允許http://www.example.com/Abc.htm

所以在IIS服務器可能出現的 諸多 大小寫目錄問題,可以通過此方法得到圓滿解決。

如果頁面中包含了多個同類型meta標簽,spider會累加內容取值

對于下面兩條語句來說:

<meta name=”robots” content=”noindex” />

<meta name=”robots” content=”nofollow” />

搜索引擎將會理解成:

<meta name=”robots” content=”noindex, nofollow” />

當內容取值沖突的時候,google和百度等大多數搜索引擎會采納限制性最強的參數

例如,如果頁面中包含如下meta標簽:

<meta name=”robots” content=”noindex” />

<meta name=”robots” content=”index” />

Spider會服從noindex的取值。

如果你既用了robots.txt文件又用了robots meta標簽

當二者出現沖突,googlebot會服從其中限制較嚴的規則

如果你在robots.txt中阻止了對一個頁面的檢索,googlebot永遠不會爬到這個頁面,因此也根本不會讀到這個頁面上的meta標簽。 如果你在robots.txt里面允許了對一個頁面的檢索,卻在meta標簽中禁止了這一行為,googlebot會到達這個頁面,在讀到meta標簽后終止進一步的檢索行為。

當然,前提是搜索引擎嚴格按照robots來辦事

劉總說的robots很詳細,另外還有大神補充一個經常出現的問題,就是robots.txt本身文件的格式是utf-8的,用一些文本編輯器在生成的時候,經常會出現在文本前出現多處的ascii碼問題,這樣的情況就造成了User-agent:讀取出錯。

可以在 google 站長工具 或?http://tool.motoricerca.info/robots-checker.phtml?進行檢測。

來源:本文由思享SEO博客原創撰寫,歡迎分享本文,轉載請保留出處和鏈接!
seo培訓評論廣告

搶沙發

昵稱*

郵箱*

網址

七乐彩选号技巧