關於robot.txt

網站能不能被搜索引擎索引到,除了看有沒有向搜索引擎入口提交、有否與其他站點交換鏈接等之外,還得看根目錄底下的robots.txt文件有沒有禁止搜索引擎的收錄。熟練書寫robots.txt語法,是每個SEOer所必須掌握的基本技能。SEO研究院曾經寫過一篇《SEO七十二案例:Z-Blog優化完全攻略》的具體案例,闡述過如何通過robots.txt來優化Z-blog,大家可以先參考下。
以下robots.txt的語法教學部分的寫作參考了一些網絡信息,在此SEO研究院表示感謝,寫作過程中,有些內容已經老舊,而SEO是不斷髮展的,因此視情況對其進行了去僞存真以及相關整理。
一、什麼是robots.txt文件:
搜索引擎通過一種爬蟲spider程序(又稱搜索蜘蛛、robot、搜索機器人等),自動蒐集互聯網上的網頁並獲取相關信息。
鑑於網絡安全與隱私的考慮,搜索引擎遵循robots.txt協議。通過根目錄中創建的純文本文件robots.txt,網站可以聲明不想被robots訪問的部分。每個網站都可以自主控制網站是否願意被搜索引擎收錄,或者指定搜索引擎只收錄指定的內容。當一個搜索引擎的爬蟲訪問一個站點時,它會首先檢查該站點根目錄下是否存在robots.txt,如果該文件不存在,那麼爬蟲就沿着鏈接抓取,如果存在,爬蟲就會按照該文件中的內容來確定訪問的範圍。

robots.txt必須放置在一個站點的根目錄下,而且文件名必須全部小寫。
二、robots.txt文件的語法:
1、網站URL以及相應的robots.txt的URL
http://www.w3.org/對應http://www.w3.org/robots.txt
http://www.w3.org:80/則對應的是http://www.w3.org:80/robots.txt
下面是一些著名站點的robots.txt:
Google的robots.txt:http://www.google.com/robots.txt
百度的robots.txt:http://www.baidu.com/robots.txt
SEO研究院的robots.txt文件:http://www.dugutianjiao.com/robots.txt
2、robots.txt文件的格式:
robots.txt文件應該包含一條或更多的記錄,這些記錄通過空行分開。該文件中的記錄通常以一行或多行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,該網站都是開放的。
3、robots.txt文件用法舉例:
例1. 禁止所有搜索引擎訪問網站的任何部分
User-agent: *
Disallow: /
實例分析:淘寶網的 Robots.txt文件
User-agent: Baiduspider
Disallow: /

User-agent: baiduspider
Disallow: /
很顯然淘寶不允許百度的機器人訪問其網站下其所有的目錄。
例2. 允許所有的robot訪問 (或者也可以建一個空文件 “/robots.txt” file)
User-agent: *
Disallow:
例3. 禁止某個搜索引擎的訪問
User-agent: BadBot
Disallow: /
例4. 允許某個搜索引擎的訪問
User-agent: baiduspider
Disallow: User-agent: *Disallow: /
例5.一個簡單例子  
在這個例子中,該網站有三個目錄對搜索引擎的訪問做了限制,即搜索引擎不會訪問這三個目錄。  
需要注意的是對每一個目錄必須分開聲明,而不要寫成 “Disallow: /cgi-bin/ /tmp/”。  User-agent:後的*具有特殊的含義,代表”any robot”,所以在該文件中不能有”Disallow: /tmp/*” or “Disallow:*.gif”這樣的記錄出現.
User-agent: *
Disallow: /cgi-bin/
Disallow: /tmp/
Disallow: /~joe/
Robot特殊參數:
1. Google
允許 Googlebot:
如果您要攔截除 Googlebot 以外的所有漫遊器訪問您的網頁,可以使用下列語法:
User-agent:
Disallow:/
User-agent:Googlebot
Disallow:
Googlebot 跟隨指向它自己的行,而不是指向所有漫遊器的行。
“Allow”擴展名:
Googlebot 可識別稱爲“Allow”的 robots.txt 標準擴展名。其他搜索引擎的漫遊器可能無法識別此擴展名,因此請使用您感興趣的其他搜索引擎進行查找。“Allow”行的作用原理完全與“Disallow”行一樣。只需列出您要允許的目錄或頁面即可。
您也可以同時使用“Disallow”和“Allow”。例如,要攔截子目錄中某個頁面之外的其他所有頁面,可以使用下列條目:
User-Agent:Googlebot
Disallow:/folder1/
Allow:/folder1/myfile.html
這些條目將攔截 folder1 目錄內除 myfile.html 之外的所有頁面。
如果您要攔截 Googlebot 並允許 Google 的另一個漫遊器(如 Googlebot-Mobile),可使用”Allow”規則允許該漫遊器的訪問。例如:
User-agent:Googlebot
Disallow:/
User-agent:Googlebot-Mobile
Allow:
使用 * 號匹配字符序列:
您可使用星號 (*) 來匹配字符序列。例如,要攔截對所有以 private 開頭的子目錄的訪問,可使用下列條目:
User-Agent:Googlebot
Disallow:/private*/
要攔截對所有包含問號 (?) 的網址的訪問,可使用下列條目:
User-agent:*
Disallow:/*?*
使用 $ 匹配網址的結束字符
您可使用 $ 字符指定與網址的結束字符進行匹配。例如,要攔截以 .asp 結尾的網址,可使用下列條目:
User-Agent:Googlebot
Disallow:/*.asp$
您可將此模式匹配與 Allow 指令配合使用。例如,如果 ? 表示一個會話 ID,您可排除所有包含該 ID 的網址,確保 Googlebot 不會抓取重複的網頁。但是,以 ? 結尾的網址可能是您要包含的網頁版本。在此情況下,可對 robots.txt 文件進行如下設置:
User-agent:*
Allow:/*?$
Disallow:/*?
Disallow:/ *?一行將攔截包含 ? 的網址(具體而言,它將攔截所有以您的域名開頭、後接任意字符串,然後是問號 (?),而後又是任意字符串的網址)。
Allow: /*?$ 一行將允許包含任何以 ? 結尾的網址(具體而言,它將允許包含所有以您的域名開頭、後接任意字符串,然後是問號 (?),問號之後沒有任何字符的網址)。
4、常見搜索引擎機器人Robots名字
百度的蜘蛛名字叫“Baiduspider ”,Google的蜘蛛是“Googlebot”,Yahoo的是“Yahoo!Slurp”,MSN的蜘蛛則是“MSNbot” ,Alexa也有自己的蜘蛛,叫“ia_archiver ”。
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文件的有效性:http://www.searchengineworld.com/cgi-bin/robotcheck.cgi。我們可以通過google sitemap中的robots.txt檢測工具來檢查網站上是否存在robots.txt文件以及該文件寫法是否正確。
三、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指令告訴搜索機器人抓取該頁面;
follow指令表示搜索機器人可以沿着該頁面上的鏈接繼續抓取下去;
Robots Meta標籤的缺省值是index和follow,只有inktomi除外,對於它,缺省值是index、nofollow。
需要注意的是:上述的robots.txt和Robots Meta標籤限制搜索引擎機器人(ROBOTS)抓取站點內容的辦法只是一種規則,需要搜索引擎機器人的配合才行,並不是每個ROBOTS都遵守的。
目前看來,絕大多數的搜索引擎機器人都遵守robots.txt的規則,而對於RobotsMETA標籤,目前支持的並不多,但是正在逐漸增加,如著名搜索引擎GOOGLE就完全支持,而且GOOGLE還增加了一個指令“archive”,可以限制GOOGLE是否保留網頁快照。
Sitemap 網站地圖:
對網站地圖的新的支持方式,就是在robots.txt文件裏直接包括sitemap文件的鏈接。
就像這樣:
Sitemap:http://www.dugutianjiao.com/sitemap.xml
目前對此表示支持的搜索引擎公司有Google, Yahoo和MSN。不過,我們建議還是在Google Sitemap進行提交,裏面有很多功能可以分析你的鏈接狀態。
四、Robots.txt利弊分析
robots.txt帶來的好處:
1. 幾乎所有的搜索引擎Spider都遵循robots.txt給出的爬行規則,協議規定搜索引擎Spider進入某個網站的入口即是該網站的robots.txt,當然,前提是該網站存在此文件。對於沒有配置robots.txt的網站,Spider將會被重定向至404 錯誤頁面,相關研究表明,如果網站採用了自定義的404錯誤頁面,那麼Spider將會把其視作robots.txt——雖然其並非一個純粹的文本文件——這將給Spider索引網站帶來很大的困擾,影響搜索引擎對網站頁面的收錄。因此,如果不會寫這個文件,建議放一個空的robots.txt文本文件即可。
2. robots.txt可以制止不必要的搜索引擎佔用服務器的寶貴帶寬,如email retrievers,這類搜索引擎對大多數網站是沒有意義的;再如image strippers,對於大多數非圖形類網站來說其也沒有太大意義,但卻耗用大量帶寬。
3. robots.txt可以制止搜索引擎對非公開頁面的爬行與索引,如網站的後臺程序、管理程序,事實上,對於某些在運行中產生臨時頁面的網站來說,如果未配置robots.txt,搜索引擎甚至會索引那些臨時文件。
4. 對於內容豐富、存在很多頁面的網站來說,配置robots.txt的意義更爲重大,因爲很多時候其會遭遇到搜索引擎Spider給予網站的巨大壓力:洪水般的Spider訪問,如果不加控制,甚至會影響網站的正常訪問。
5. 同樣地,如果網站內存在重複內容,使用robots.txt限制部分頁面不被搜索引擎索引和收錄,可以避免網站受到搜索引擎關於 duplicate content的懲罰,保證網站的排名不受影響。
robots.txt帶來的風險及解決:
1. 凡事有利必有弊,robots.txt同時也帶來了一定的風險:其也給攻擊者指明瞭網站的目錄結構和私密數據所在的位置。雖然在Web服務器的安全措施配置得當的前提下這不是一個嚴重的問題,但畢竟降低了那些不懷好意者的攻擊難度。
比如說,如果網站中的私密數據通過www.yourdomain.com/private/index.html 訪問,那麼,在robots.txt的設置可能如下:
User-agent: *
Disallow: /private/
這樣,攻擊者只需看一下robots.txt即可知你要隱藏的內容在哪裏,在瀏覽器中輸入www.yourdomain.com/private/ 便可訪問我們不欲公開的內容。
2. 如果設置不對,將導致搜索引擎將索引的數據全部刪除。下面的代碼將禁止所有的搜索引擎索引數據:
User-agent: *
Disallow: /
目前看來,絕大多數的搜索引擎機器人都遵守robots.txt的規則,而對於Robots META標籤,目前支持的並不多,但是正在逐漸增加,如著名搜索引擎GOOGLE就完全支持,而且GOOGLE還增加了一個指令“archive”,可以限制GOOGLE是否保留網頁快照。例如一下代碼表示抓取該站點中頁面並沿着頁面中鏈接抓取,但是不在GOOLGE上保留該頁面的網頁快照:
<META NAME=”googlebot” CONTENT=”index,follow,noarchive”>
參考文獻:
A Standard for Robot Exclusion:http://www.robotstxt.org/orig.html
禁止搜索引擎收錄的方法:http://www.baidu.com/search/robots.html
如何使用robots.txt:http://www.googlechinablog.com/2008/04/robotstxt.html
維基百科Robots.txt:http://zh.wikipedia.org/wiki/Robots.txt
首發地址:http://www.dugutianjiao.com/post/seo-robots-txt.html ,轉載請保留鏈接。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章