關於Robots.txt的語法

談談ROBOTS.TXT語法和做用php

咱們知道,搜索引擎都有本身的「搜索機器人」(ROBOTS),並經過這些ROBOTS在網絡上沿着網頁上的連接(通常是http和src連接)不斷抓取資料創建本身的數據庫。css


對於網站管理者和內容提供者來講,有時候會有一些站點內容,不但願被ROBOTS抓取而公開。爲了解決這個問題,ROBOTS開發界提供了兩個辦法:一個是robots.txt,另外一個是The Robots META標籤。 html

 

1、    robots.txtjava

一、 什麼是robots.txt?
robots.txt是一個純文本文件,經過在這個文件中聲明該網站中不想被robots訪問的部分,這樣,該網站的部分或所有內容就能夠不被搜索引擎收錄了,或者指定搜索引擎只收錄指定的內容。當一個搜索機器人訪問一個站點時,它會首先檢查該站點根目錄下是否存在robots.txt,若是找到,搜索機器人就會按照該文件中的內容來肯定訪問的範圍,若是該文件不存在,那麼搜索機器人就沿着連接抓取。web


robots.txt必須放置在一個站點的根目錄下,並且文件名必須所有小寫
網站 URL
相應的 robots.txt的 URL
http://www.jinpingmei.org.cn
http://www.jinpingmei.org.cn/robots.txtajax

http://www.w3.org/
http://www.w3.org/robots.txt數據庫

http://www.w3.org:80/
http://www.w3.org:80/robots.txtapi

http://www.w3.org:1234/
http://www.w3.org:1234/robots.txt網絡

http://w3.org/
http://w3.org/robots.txtide

二、robots 語法:

「robots.txt」文件包含一條或更多的記錄,這些記錄經過空行分開(以CR,CR/NL, or NL做爲結束符),每一條記錄的格式以下所示:
「<field>:<optionalspace><value><optionalspace>」。
在該文件中可使用#進行註解,具體使用方法和UNIX中的慣例同樣。該文件中的記錄一般以一行或多行User-agent開始,後面加上若干Disallow行,詳細狀況以下:
User-agent:
在」robots.txt」文件中,若是有多條User-agent記錄說明有多個robot會受到」robots.txt」的限制,對該文件來講,至少要有一條User-agent記錄。若是該項的值設爲*,則對任何robot均有效,在」robots.txt」文件中,」User-agent:*」這樣的記錄只能有一條。
若是在」robots.txt」文件中,加入」User-agent:SomeBot」和若干Disallow、Allow行,那麼名爲」SomeBot」只受到」User-agent:SomeBot」後面的Disallow和Allow行的限制。
Disallow:
這個值能夠是一條完整的路徑,也能夠是路徑的非空前綴,以Disallow項的值開頭的URL不會被robot訪問。例如」Disallow:/help」禁止robot訪問/help.html、/helpabc.html、/help/index.html,而」Disallow:/help/」則容許robot訪問/help.html、/helpabc.html,不能訪問/help /index.html。
「Disallow:」說明容許robot訪問該網站的全部url,在」/robots.txt」文件中,至少要有一條Disallow記錄。若是」/robots.txt」不存在或者爲空文件,則對於全部的搜索引擎robot,該網站都是開放的。
 要攔截整個網站,請使用正斜扛。
Disallow:/
 要攔截目錄及其中的全部內容,請在目錄名後添加正斜扛。
Disallow:/private_directory/
 要攔截網頁,請列出該網頁。
Disallow:/private_file.html
Allow:
與Disallow項類似,這個值能夠是一條完整的路徑,也能夠是路徑的前綴,以Allow項的值開頭的URL是容許robot訪問的。例如」Allow:/hibaidu」容許robot訪問/hibaidu.htm、/hibaiducom.html、/hibaidu /com.html。一個網站的全部URL默認是Allow的,因此Allow一般與Disallow搭配使用,實現容許訪問一部分網頁同時禁止訪問其它全部URL的功能。
注意:Disallow與Allow行的順序是有意義的,robot會根據第一個匹配成功的Allow或Disallow行肯定是否訪問某個URL。
使用 * 匹配字符序列
您可以使用星號 (*) 來匹配字符序列。例如,要攔截對全部以」專用」開頭的子目錄的訪問,可以使用下列條目:
User-Agent:Googlebot
Disallow:/專用*/
要攔截對全部包含問號 (?) 的網址的訪問,可以使用下列條目:
User-agent:*
Disallow:/*?
使用 $ 匹配網址的結束字符
您可以使用 $ 字符指定與網址的結束字符進行匹配。例如,要攔截以 .asp 結尾的網址,可以使用下列條目:
User-Agent:Googlebot
Disallow:/*.asp$
您可將此模式匹配與 Allow 指令配合使用。例如,若是 ? 表示一個會話 ID,您可排除全部包含該 ID 的網址,確保搜索引擎蜘蛛不會抓取重複的網頁。可是,以 ? 結尾的網址多是您要包含的網頁版本。在此狀況下,可對 robots.txt 文件進行以下設置:
User-agent:*
Allow:/*?$
Disallow:/*?
Disallow:/ *? 一行將攔截包含 ? 的網址(具體而言,它將攔截全部以您的域名開頭、後接任意字符串,而後是問號 (?),然後又是任意字符串的網址)。
Allow: /*?$ 一行將容許包含任何以 ? 結尾的網址(具體而言,它將容許包含全部以您的域名開頭、後接任意字符串,而後是問號 (?),問號以後沒有任何字符的網址)。

下面是一些robots.txt基本的用法:

l         禁止全部搜索引擎訪問網站的任何部分:
User-agent: *
Disallow: /

l         容許全部的robot訪問
User-agent: *
Disallow:
或者也能夠建一個空文件 "/robots.txt" file

l         禁止全部搜索引擎訪問網站的幾個部分(下例中的cgi-bin、tmp、private目錄)
User-agent: *
Disallow: /cgi-bin/
Disallow: /tmp/
Disallow: /private/

l         禁止某個搜索引擎的訪問(下例中的BadBot)
User-agent: BadBot
Disallow: /

l         只容許某個搜索引擎的訪問(下例中的WebCrawler)
User-agent: WebCrawler
Disallow:

User-agent: *
Disallow: /

三、  常見搜索引擎機器人Robots名字

名稱                     搜索引擎

 

Baiduspider            http://www.baidu.com
Scooter              http://www.altavista.com
ia_archiver             http://www.alexa.com
Googlebot           http://www.google.com
FAST-WebCrawler http://www.alltheweb.com
Slurp                  http://www.inktomi.com
MSNBOT            http://search.msn.com


四、 robots.txt舉例

下面是一些著名站點的robots.txt:
http://www.cnn.com/robots.txt
http://www.google.com/robots.txt
http://www.ibm.com/robots.txt
http://www.sun.com/robots.txt
http://www.eachnet.com/robots.txt

五、 常見robots.txt錯誤


l         顛倒了順序:
錯誤寫成
User-agent: *
Disallow: GoogleBot

正確的應該是:
User-agent: GoogleBot
Disallow: *

l         把多個禁止命令放在一行中:
例如,錯誤地寫成
Disallow: /css/ /cgi-bin/ /p_w_picpaths/

正確的應該是
Disallow: /css/
Disallow: /cgi-bin/
Disallow: /p_w_picpaths/

l         行前有大量空格
例如寫成
        Disallow: /cgi-bin/
儘管在標準沒有談到這個,可是這種方式很容易出問題。

l         404重定向到另一個頁面:
當Robot訪問不少沒有設置robots.txt文件的站點時,會被自動404重定向到另一個Html頁面。這時Robot經常會以處理robots.txt文件的方式處理這個Html頁面文件。雖然通常這樣沒有什麼問題,可是最好能放一個空白的robots.txt文件在站點根目錄下。

l         採用大寫。例如
USER-AGENT: EXCITE
DISALLOW:
雖然標準是沒有大小寫的,可是目錄和文件名應該小寫:
user-agent:GoogleBot
disallow:

l         語法中只有Disallow,沒有Allow!
錯誤的寫法是:
User-agent: Baiduspider      
Disallow: /john/
allow: /jane/

l         忘記了斜槓/
錯誤的寫作:
User-agent: Baiduspider      
Disallow: css

正確的應該是
User-agent: Baiduspider      
Disallow: /css/ 

2、          Robots META標籤


一、什麼是Robots META標籤


Robots.txt文件主要是限制整個站點或者目錄的搜索引擎訪問狀況,而Robots META標籤則主要是針對一個個具體的頁面。和其餘的META標籤(如使用的語言、頁面的描述、關鍵詞等)同樣,Robots META標籤也是放在頁面的中,專門用來告訴搜索引擎ROBOTS如何抓取該頁的內容。
二、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的規則,而對於Robots META標籤,目前支持的並很少,可是正在逐漸增長,如著名搜索引擎GOOGLE就徹底支持,並且GOOGLE還增長了一個指令「archive」,能夠限制GOOGLE是否保留網頁快照。例如:

表示抓取該站點中頁面並沿着頁面中連接抓取,可是不在GOOLGE上保留該頁面的網頁快照


例子:
# robots, scram

User-agent: *
Disallow:   /cgi-bin
Disallow:   /TRANSCRIPTS
Disallow:   /development
Disallow:   /third
Disallow:   /beta
Disallow:   /java
Disallow:   /shockwave
Disallow:   /JOBS
Disallow:   /pr
Disallow:   /Interactive
Disallow:   /alt_index.html
Disallow:   /webmaster_logs
Disallow:   /newscenter
Disallow:       /virtual
Disallow:       /DIGEST
Disallow:       /QUICKNEWS
Disallow:       /SEARCH

User-agent: Mozilla/3.01 (hotwired-test/0.1)
Disallow:   /cgi-bin
Disallow:   /TRANSCRIPTS
Disallow:   /development
Disallow:   /third
Disallow:   /beta
Disallow:   /java
Disallow:   /shockwave
Disallow:   /JOBS
Disallow:   /pr
Disallow:   /Interactive
Disallow:   /alt_index.html
Disallow:   /webmaster_logs
Disallow:   /newscenter
Disallow:       /virtual
Disallow:       /DIGEST
Disallow:       /QUICKNEWS
Disallow:       /SEARCH

User-agent: Slurp
Disallow:   /cgi-bin
Disallow:   /TRANSCRIPTS
Disallow:   /development
Disallow:   /third
Disallow:   /beta
Disallow:   /java
Disallow:   /shockwave
Disallow:   /JOBS
Disallow:   /pr
Disallow:   /Interactive
Disallow:   /alt_index.html
Disallow:   /webmaster_logs
Disallow:   /newscenter
Disallow:       /virtual
Disallow:       /DIGEST
Disallow:       /QUICKNEWS
Disallow:       /SEARCH


如咱們DZ的程序 的寫法,你們結合上面的寫法說明 應該能看懂

#
# robots.txt for Discuz! Board
# Version 5.5.0
#

User-agent: *

Disallow: /admin/ Disallow: /api/ Disallow: /p_w_uploads/ Disallow: /customavatars/ Disallow: /p_w_picpaths/ Disallow: /forumdata/ Disallow: /include/ Disallow: /ipdata/ Disallow: /templates/ Disallow: /plugins/ Disallow: /mspace/ Disallow: /wap/ Disallow: admincp.php Disallow: ajax.php Disallow: digest.php Disallow: logging.php Disallow: member.php Disallow: memcp.php Disallow: misc.php Disallow: my.php Disallow: pm.php Disallow: post.php Disallow: register.php Disallow: rss.php Disallow: search.php Disallow: seccode.php Disallow: topicadmin.php

相關文章
相關標籤/搜索