搜索引擎通過一種程序robot(又稱spider),自動訪問互聯網上的網頁並獲取網頁信息。
您可以在您的網站中創建一個純文本文件robots.txt,在這個文件中聲明該網站中不想被robot訪問的部分,這樣,該網站的部分或全部內容就可以不被搜索引擎收錄了,或者指定搜索引擎只收錄指定的內容。robots.txt文件應該放在網站根目錄下。
當一個搜索機器人(有的叫搜索蜘蛛)訪問一個站點時,它會首先檢查該站點根目錄下是否存在robots.txt,如果存在,搜索機器人就會按照該文件中的內容來確定訪問的范圍;如果該文件不存在,那麼搜索機器人就沿著鏈接抓取。
robots.txt文件的格式:
“robots.txt”文件包含一條或更多的記錄,這些記錄通過空行分開(以CR,CR/NL, or NL作為結束符),每一條記錄的格式如下所示:
“<field>:<optionalspace><value><optionalspace>”。
在該文件中可以使用#進行注解,具體使用方法和UNIX中的慣例一樣。該文件中的記錄通常以一行或多行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,該網站都是開放的。
robots.txt文件用法舉例:
例1. 禁止所有搜索引擎訪問網站的任何部分 下載該robots.txt文件 User-agent: * Disallow: /
例2. 允許所有的robot訪問 (或者也可以建一個空文件 “/robots.txt” file) User-agent: *Disallow:
例3. 禁止某個搜索引擎的訪問 User-agent: BadBotDisallow: /
例4. 允許某個搜索引擎的訪問 User-agent: baiduspiderDisallow: 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: /*?$ 一行將允許包含任何以 ? 結尾的網址(具體而言,它將允許包含所有以您的域名開頭、後接任意字符串,然後是問號 (?),問號之後沒有任何字符的網址)。
Sitemap 網站地圖:
對網站地圖的新的支持方式,就是在robots.txt文件裡直接包括sitemap文件的鏈接。
就像這樣:
Sitemap: http://www.eastsem.com/sitemap.xml
目前對此表示支持的搜索引擎公司有Google, Yahoo, Ask and MSN。
不過,我建議還是在Google Sitemap 進行提交,裡面有很多功能可以分析你的鏈接狀態。
更多精彩點擊下一頁
Robots.txt帶來的好處:
1. 幾乎所有的搜索引擎Spider都遵循robots.txt給出的爬行規則,協議規定搜索引擎Spider進入某個網站的入口即是該網站的 robots.txt,當然,前提是該網站存在此文件。對於沒有配置robots.txt的網站,Spider將會被重定向至404 錯誤頁面,相關研究表明,如果網站采用了自定義的404錯誤頁面,那麼Spider將會把其視作robots.txt——雖然其並非一個純粹的文本文件 ——這將給Spider索引網站帶來很大的困擾,影響搜索引擎對網站頁面的收錄。
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/ 便可訪問我們不欲公開的內容。對這種情況,一般采取如下的辦法:
設置訪問權限,對/private/中的內容實施密碼保護,這樣,攻擊者便無從進入。
另一種辦法是將缺省的目錄主文件index.html更名為其他,比如說abc-protect.html,這樣,該內容的地址即變成 www.yourdomain.com/private/abc-protect.htm,同時,制作一個新的index.html文件,內容大致為“你沒有權限訪問此頁”之類,這樣,攻擊者因不知實際的文件名而無法訪問私密內容。
2. 如果設置不對,將導致搜索引擎將索引的數據全部刪除。
User-agent: *
Disallow: /
上述代碼將禁止所有的搜索引擎索引數據。
目前看來,絕大多數的搜索引擎機器人都遵守robots.txt的規則,而對於Robots META標簽,目前支持的並不多,但是正在逐漸增加,如著名搜索引擎GOOGLE就完全支持,而且GOOGLE還增加了一個指令“archive”,可以限制GOOGLE是否保留網頁快照。例如:
<META NAME=”googlebot” CONTENT=”index,follow,noarchive”>
表示抓取該站點中頁面並沿著頁面中鏈接抓取,但是不在GOOLGE上保留該頁面的網頁快照。