有些時候,我們並不希望網站的某些頁面被抓取和收錄,比如付費內容、還在測試階段的頁面、複製內容頁面等。即便我們在網站上不出現這些頁面的連結,甚至使用 JavaScript、Flash 的方式進行連結,nofollow 標籤也不能保證頁面一定不被搜尋引擎收錄,雖然我們自己沒有連結到不想被收錄的頁面,但其他網站可能由於某種原因出現匯入連結,而致使頁面被收錄。
要確保頁面不被收錄,方法之一就是使用 robots.txt 檔案。
robots.txt 檔案是什麼?
robots.txt 即蜘蛛協定,全稱為“網路爬蟲排除標準”(Robots Exclusion Protocol),也稱為爬蟲協定、機器人協定等,其作用是告知搜尋引擎允許或不允許抓取哪些頁面。
robots.txt 是一種純文字格式的檔案,使用任何一個常見的文字編輯器(比如Windows系統自帶的記事本)就可以建立和編輯,它是搜尋引擎進入網站後第一個爬取的檔案,通常放置於網站根目錄下。
搜尋引擎蜘蛛在存取網站時會先檢視網站根目錄下是否存在一個名為 robots.txt 的純文字檔案,robots.txt 用於指定搜尋引擎禁止抓取網站某些內容或指定允許抓取某些內容,如C語言中文網的 robots 檔案位於 http://c.biancheng.net/robots.txt。
只有在需要禁止抓取某些內容時,寫 robots.txt 才有意義。
robots檔案不存在或者是空檔案都意味著允許搜尋引擎抓取所有內容。
部分伺服器存在設定問題,當 robots 檔案不存在時會返回 200 狀態碼及一些錯誤資訊,而不是 404 狀態碼,這有可能使搜尋引擎錯誤解讀 robots 檔案資訊,所以建議即使允許抓取所有內容,也要建一個空的 robots.txt 檔案放在根目錄下。
robots 檔案的用法
robots.txt 檔案由記錄組成,記錄之間以空行分開,我們舉例說明 robots.txt 的具體格式。
例1:禁止所有搜尋引擎存取網站的任何部分:
User-agent: *
Disallow: /
例2:允許所有搜尋引擎蜘蛛存取(或者建一個空檔案“/robots.txt”):
User-agent: *
Allow: /
例3:禁止某個搜尋引擎存取:
User-agent: Baiduspider
Disallow: /
例4:允許某個搜尋引擎存取:
User-agent: Baiduspider
Allow: /
例5:只允許某個搜尋引擎存取,其他搜尋引擎禁止存取:
User-agent: Baiduspider
Disallow:
User-agent: *
Disallow: /
例6:只禁止某個搜尋引擎存取,其他搜尋引擎允許存取:
User-agent: Baiduspider
Disallow: /
User-agent: *
Disallow:
書寫 robots 檔案時需要注意以下細節:
-
一定不要寫絕對路徑,就是不要帶網站域名,用
/
代替即可。
-
注意 robots 檔案中的所有符號都是在英文狀態下寫的,比如 Disallow: /admin/ 中的
:
是英文狀態下的。
-
注意空格,例如 Disallow: /admin/ 中
:
後面緊跟著一個空格。
-
注意大小寫,例如 Disallow: /admin/ 中 Disallow 的
D
是大寫的。
-
robots 是有生效時間的,是由百度決定的,幾天或者兩個月以內,所以一定不要隨便遮蔽整站。
-
還有一點要弄清楚,Disallow: /help 的意思是禁止蜘蛛存取 /help.html、/helpabc.html、/help/index.html 等所有帶 help 的檔案及資料夾;Disallow:/help/ 則是禁止蜘蛛存取 /help/index.html 這種形式的路徑,允許存取 /help.html、/helpabc.html。
robots.txt 檔案內容釋義:
1) User-agent
User-agent 代表蜘蛛名稱,例如:
-
User-agent:Baiduspider 代表針對百度蜘蛛。
-
User-agent:* 代表所有的搜尋引擎種類,
*
是一個萬用字元。
2) Disallow
Disallow 表示不允許,代表禁止蜘蛛爬取的檔案或目錄。例如:
-
Disallow: /admin/ 代表禁止爬取 admin 目錄下的所有檔案。
-
Disallow: /cgi-bin/*.htm 代表禁止存取 /cgi-bin/ 目錄下的所有以
.htm
為字尾的 URL(包含子目錄)。
-
Disallow: /*?* 代表禁止存取網站中所有包含問號
?
的網址。
-
Disallow: /.jpg$ 代表禁止爬取網頁所有的
.jpg
格式的圖片。
-
Disallow:/ad/ct.html 代表禁止爬取 ad 資料夾下的 ct.html 檔案。
3) Allow
Allow 表示允許,代表允許蜘蛛爬取的目錄或檔案。例如:
-
Allow: /cgi-bin/ 代表允許爬取 cgi-bin 目錄下的目錄。
-
Allow: /tmp 代表允許爬取 tmp 的整個目錄。
-
Allow: .htm$ 代表僅允許存取以
.htm
為字尾的 URL。
-
Allow: .gif$ 允許爬取網頁和 GIF 格式的圖片。
4) Sitemap
Sitemap 一般放在 robots.txt 內容最底部,用於告知網路爬蟲這個頁面是網站地圖,如 Sitemap:http://www.youdomainname.com/sitemap.htm。
主流搜尋引擎都遵守 robots 檔案指令,robots.txt 禁止爬取的檔案搜尋引擎將不存取、不爬取。但要注意的是,被 robots 檔案禁止爬取的 URL 還是可能出現在搜尋結果中。只要有匯入連結指向這個 URL,搜尋引擎就知道這個 URL 的存在。雖然不會抓取頁面內容,但是可能以下面幾種形式顯示在搜尋結果中:
-
只顯示 URL,沒有標題、描述,谷歌常這樣處理。
-
顯示開放目錄或雅虎等重要目錄收錄的標題和描述。
-
匯入連結的錨文字顯示為標題和描述,百度常這樣處理。
要想使 URL 完全不出現在搜尋結果中,需要使用頁面上的 meta robots 標籤。