Robots.txt指南

Robots.txt指南
當搜索引擎訪問一個網站時,它首先會檢查該網站的根域下是否有一個叫做robots.txt的純文本文件。Robots.txt文件用于限定搜索引擎對其 網站的訪問范圍,即告訴搜索引擎網站中哪些文件是允許它進行檢索(下載)的。這就是大家在網絡上常看到的“拒絕Robots訪問標準”(Robots Exclusion Standard)。下面我們簡稱RES。
Robots.txt文件的格式:
  Robots.txt文件的格式比較特殊,它由記錄組成。這些記錄通過空行分開。其中每條記錄均由兩個域組成:
  1) 一個User-Agent(用戶代理)字符串行;
  2) 若干Disallow字符串行。
  記錄格式為: ":"
  下面我們分別對這兩個域做進一步說明。
User-agent(用戶代理):
  User-agent行(用戶代理行) 用于指定搜索引擎robot的名字,以Google的檢索程序Googlebot為例,有:User-agent: Googlebot
  一個robots.txt中至少要有一條User-agent記錄。如果有多條User-agent記錄,則說明有多個robot會受到RES標準的限制。當然了,如果要指定所有的robot,只需用一個通配符"*"就搞定了,即:User-agent: *
Disallow(拒絕訪問聲明):
   在Robots.txt文件中,每條記錄的第二個域是Disallow:指令行。這些Disallow行聲明了該網站中不希望被訪問的文件和(或)目 錄。例如"Disallow: email.htm"對文件的訪問進行了聲明,禁止Spiders下載網站上的email.htm文件。而"Disallow: /cgi-bin/"則對cgi-bin目錄的訪問進行了聲明,拒絕Spiders進入該目錄及其子目錄。Disallow聲明行還具有通配符功能。例如 上例中"Disallow: /cgi-bin/"聲明了拒絕搜索引擎對cgi-bin目錄及其子目錄的訪問,而"Disallow:/bob"則拒絕搜索引擎對/bob.html和 /bob/index.html的訪問(即無論是名為bob的文件還是名為bob的目錄下的文件都不允許搜索引擎訪問)。Disallow記錄如果留空, 則說明該網站的所有部分都向搜索引擎開放。
空格 & 注釋
  在robots.txt文件中,凡以"#"開頭的行,均被視為注解內容,這和UNIX中的慣例是一樣的。但大家需要注意兩個問題:
   1) RES標準允許將注解內容放在指示行的末尾,但這種格式并不是所有的Spiders都能夠支持。譬如,并不是所有的Spiders都能夠正確理 解"Disallow: bob #comment"這樣一條指令。有的Spiders就會誤解為Disallow的是"bob#comment"。最好的辦法是使注解自成一行。
  2) RES標準允許在一個指令行的開頭存在空格,象"Disallow: bob #comment",但我們也并不建議大家這么做。
Robots.txt文件的創建:
   需要注意的是,應當在UNIX命令行終端模式下創建Robots.txt純文本文件。好的文本編輯器一般都能夠提供UNIX模式功能,或者你的FTP客 戶端軟件也“應該”能夠替你轉換過來。如果你試圖用一個沒有提供文本編輯模式的HTML編輯器來生成你的robots.txt純文本文件,那你可就是瞎子 打蚊子——白費力氣了。
對RES標準的擴展:
  盡管已經提出了一些擴展標準,如Allow行或Robot版本控制(例如應該忽略大小寫和版本號),但尚未得到RES工作組的正式批準認可。
附錄I. Robots.txt用法舉例:
  使用通配符"*",可設置對所有robot的訪問權限。
  User-agent: *
  Disallow:
  表明:允許所有搜索引擎訪問網站下的所有內容。
  User-agent: *
  Disallow: /
  表明:禁止所有搜索引擎對網站下所有網頁的訪問。
  User-agent: *
  Disallow: /cgi-bin/Disallow: /images/
  表明:禁止所有搜索引擎進入網站的cgi-bin和images目錄及其下所有子目錄。需要注意的是對每一個目錄必須分開聲明。
  User-agent: Roverdog
  Disallow: /
  表明:禁止Roverdog訪問網站上的任何文件。
  User-agent: Googlebot
Disallow: cheese.htm
  表明:禁止Google的Googlebot訪問其網站下的cheese.htm文件。
  上面介紹了一些簡單的設置,對于比較復雜的設置,可參看一些大型站點如CNN或Looksmart的robots.txt文件(www.cnn.com/robots.txt? www.looksmart.com/robots.txt)
附錄II. 相關robots.txt文章參考:
  1. Robots.txt常見問題解析
  2. Robots Meta Tag的使用
  3. Robots.txt檢測程序
Robots.txt常見問題解析:
   我們開發了一個針對robots.txt文件的“驗檢程序”,同時又設計了一個搜索程序,專門下載robots.txt文件,以此對新推出的這個 “robots.txt驗檢程序”進行測試。在對DMOZ(ODP)中所鏈接的站點進行遍歷,共計檢索240萬個站點后,我們總共找到了大概75k的 robots.txt文件。
  在這些robots.txt文件中,我們發現了大量的而且是形形色色的問題。有超過5%的robots.txt文件使用了錯誤格式,有超過2%的文件由于使用的是極其拙劣的格式而導致無法為任何SPIDER讀取。我們將發現的一些問題在下面列出來供大家參考借鑒:
錯誤1—語法混用
  例如:
  User-agent: *
  Disallow: scooter
  正確語法應為:
  User-agent: scooter
  Disallow: *
錯誤2—一行Disallow聲明多個目錄
  這是一個比較常見的錯誤。我們發現很多網站在其robots.txt中,在一個Disallow指令行中放入了多個目錄。譬如:Disallow: /css/ /cgi-bin/images/
絕大多數的spiders對上述聲明行都無法做出正確的解析,有些Spiders會忽略其空格而解析為/css//cgi-bin//images/,或只解析/images/或/css/,或者根本不予解析。
正確的語法應為:
  Disallow: /css/
  Disallow: /cgi-bin/
  Disallow: /images/
錯誤3—在DOS模式下編輯robots.txt文件
   這也是一個比較常見的錯誤。正確的做法應該是在UNIX模式下編輯你的robots.txt文件并以ASCII碼格式上傳。顯然并非所有的FTP客戶端 軟件都能夠天衣無縫地將文件格式轉換為UNIX命令行終端,所以在編輯robots.txt文件時,一定要確保你的文本編輯器是在UNIX模式下。
錯誤4—在指示行末尾加注
  在robots.txt文件中,凡以"#"開頭的行,均被視為注解內容,這和UNIX中的慣例是一樣的。例如:Disallow: /cgi-bin/ # this bans robots from our cgi-bin
   雖然根據RES標準,在指示行的末尾加注是可行的,但這種格式在過去卻并非所有的Spiders都能夠支持,有些Spiders干脆就把整個句子視為注 解內容直接跳過去不讀。當然我們知道現如今搜索引擎基本上都能夠支持這種格式,不過—仍有可能無法被某些搜索引擎正確解讀,你冒得起這個險嗎?我們建議在 編輯robots.txt文件時,最好讓注解自成一行。
錯誤5—指令行前有空格
  例如"Disallow: /cgi-bin/",雖然RES標準并未對這種格式予以特別說明,但我們對這種格式是持極力反對態度的。同樣的問題擺在你面前你冒得起無法被Spiders正確解讀的險嗎?
錯誤6--404重定向至另一頁面
   一般沒有robots.txt的網站會將對robots.txt文件的調用請求轉至另一頁面。這種重定向通常不會產生服務器狀態錯誤或重定向狀態信息。 然而因為是Spiders自己決定它看到的是robots.txt文件還是一個.html文件。雖然理論上應該不會有什么問題,不過為了保險起見,不妨在 你服務器的頂級目錄下放一個空的robots.txt文件。在www.google.com/bot.html下,也提供了相同的建議—“如欲避免網絡服 務器日志中的出錯信息'找不到文件',可在其根域下創建一個空的robots.txt文件。”
錯誤7—聲明自相矛盾
  例如:
  USER-AGENT: EXCITE
  DISALLOW:
  雖然RES標準忽略大小寫(Case Sensitive),但目錄和文件名卻是大小寫敏感的。所以對于"USER-AGENT"和"DISALLOW"指令,用大小寫都是可以的。但對于所聲明的目錄或文件名卻一定要注意大小寫的問題。
錯誤8—列出所有文件
  這也是一種常見錯誤,不厭其煩地將目錄下文件全數列出。例如:
  Disallow: /AL/Alabama.html
  Disallow: /AL/AR.html
  Disallow: /Az/AZ.html
  Disallow: /Az/bali.html
  Disallow: /Az/bed-breakfast.html
  其實,上面這么多聲明行只需用目錄選項來替代:
  Disallow: /AL
  Disallow: /Az
  需要注意的是:反斜杠"/"表示禁止搜索引擎進入該目錄。如果只有幾十個文件需要設置訪問權限,那倒也無可厚非。問題是我們發現有一個robots.txt文件中列出了有400k,多達4?000個文件。我們只是納悶看到這么多聲明,有多少Spiders會掉頭而去。
錯誤9—自創ALLOW指令
  沒有ALLOW指令,只有DISALLOW指令!我們發現有這樣的用法:
  User-agent: Spot
  Disallow: /john/
  allow: /jane/
  正確寫法應為:
  User-agent: Spot
  Disallow: /john/
  Disallow:
錯誤10—對聲明的目錄無反斜杠標識
  例如我們發現有這樣的例子:
  User-agent: Spot
  Disallow: john
  對這樣的記錄Spider該怎么反應?按照RES標準,Spider會將名為"john"的文件和名為"john"的目錄都DISALLOW。所以要記得使用"/"來標識所聲明的路徑(目錄)。
   我們還發現,有些網站的優化工作做得真徹底,竟然在其robots.txt中也放了關鍵詞(費解,不明白他們怎么想的)。這些人一定是把他們的 robots.txt純文本文件當作是html文件了。(要記住:在FrontPage下是不可能正確創建robots.txt文件的)
錯誤11—網絡服務器端的錯誤配置
為什么對robots.txt文件的調用請求會產生一個二進制文件?只有網絡服務器或FTP客戶端軟件錯誤設置的情況下才可能發生這種錯誤。建議大家定期檢查自己的robots.txt文件(http://www.mydomain.com/robots.txt)。
服務器/域名“農場”
   搜索引擎檢測服務器或域名“農場”(即包含巨量站點)的一個簡單途徑是看它們的robots.txt。我們發現規模在400到500個域名的大型域名 “農場”,其“庫”內站點使用都是同一個robots.txt文件。這也就相當于告訴搜索引擎這些使用同一robots.txt文件的站點是相關聯的。
Google率先支持通配符:
  Google是第一家能夠支持robots.txt中通配符文件擴展名的搜索引擎。例如:
  User-agent: googlebot
  Disallow: *.cgi
  不過注意了,由于目前只有Google能夠支持這種格式,所以”USER-AGENT”只能是“Googlebot”。

轉載于:https://www.cnblogs.com/top5/archive/2009/09/17/1568319.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/379541.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/379541.shtml
英文地址,請注明出處:http://en.pswp.cn/news/379541.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

fwrite函數的用法示例_C語言中的fwrite()函數(帶有示例)

fwrite函數的用法示例C中的fwrite()函數 (fwrite() function in C) Prototype: 原型: size_t fwrite(void *buffer, size_t length, size_t count, FILE *filename);Parameters: 參數: void *buffer, size_t length, size_t count, FILE *filenameRetu…

標題:遞增三元組

標題&#xff1a;遞增三元組 給定三個整數數組 A [A1, A2, … AN], B [B1, B2, … BN], C [C1, C2, … CN]&#xff0c; 請你統計有多少個三元組(i, j, k) 滿足&#xff1a; 1 < i, j, k < NAi < Bj < Ck 【輸入格式】 第一行包含一個整數N。 第二行包含N個整…

伙伴算法、slab機制、內存管理函數

文章目錄1 伙伴算法頁框操作alloc_pages()2 slabslab機制要解決的問題使用高速緩存3 內存管理函數kmallockzallocvmallocvzalloc區別參考文章內核使用struct page結構體描述每個物理頁&#xff0c;也叫頁框。內核在很多情況下&#xff0c;需要申請連續的頁框&#xff0c;而且數…

eval 函數 代替函數_eval()函數以及JavaScript中的示例

eval 函數 代替函數eval()函數 (eval() function) eval() function is a predefined global function in JavaScript and it is used to evaluate (execute) an expression, which is passed to the function as a parameter. It can also evaluate any JavaScript code. eval(…

F# ≥ C#(活動模式 和枚舉)

F#提供了一個叫"活動模式"的有趣功能。它把輸入的數據轉換成其他不同的東西。 一個有趣的使用實例就是代替枚舉。但我編程枚舉的時候&#xff0c;我總不高興去鏈接枚舉項到它的定義。例如&#xff0c;下面的枚舉定義了 數字枚舉&#xff0c; enum Numbers{Odd,Even,}…

關于java的classpath設置

今天晚上實驗室的另一個人在編譯一個java程序&#xff0c;需要用到一個jar文件&#xff0c;所以在命令行編譯的時候需要添加jar的路徑&#xff0c;例如&#xff1a; java -classpath demo.jar hello 但是設置了path之后java就不會搜索當前目錄&#xff0c;也就是所如果hello在當…

C語言uthash的用法

文章目錄1 定義一個哈希表鍵值UT_hash_handle2 哈希操作聲明添加查找刪除獲取哈希表中元素個數迭代排序3 案例鍵的使用官網解釋&#xff1a;https://troydhanson.github.io/uthash/userguide.html 在使用之前&#xff0c;我們必須包含uthash.h的頭文件&#xff0c;你需要將該頭…

Javascript Paste Keyboard Shortcuts Hijack

author : kj021320 team : I.S.T.O 這樣的攻擊手段也算是極其無恥 猥瑣之極! 所以防御措施一定要做好 首先說一下通過Javascript Paste Keyboard Shortcuts Hijack能做什么???能夠讀取你本地機器任何文件! 沒錯!也就是說 你中了任何一個XSS 加上你按了粘貼快捷鍵后,你就有可…

python 生成器表達式_Python中的列表理解與生成器表達式

python 生成器表達式The list is a collection of different types of elements and there are many ways of creating a list in Python. 該列表是不同類型元素的集合&#xff0c;并且有許多方法可以在Python中創建列表。 清單理解 (List Comprehension) List comprehension…

Javaweb---監聽器

1.什么是監聽器 監聽器就是監聽某個對象的狀態變化的組件。 事件源&#xff1a;被監聽的對象 ----- 三個域對象 request session servletContext 監聽器&#xff1a;監聽事件源對象 事件源對象的狀態的變化都會觸發監聽器 ---- 62 注冊監聽器&#xff1a;將監聽器與事件源進行…

Linux中的Ramdisk和Initrd

Ramdisk簡介先簡單介紹一下ramdisk&#xff0c;Ramdisk是虛擬于RAM中的盤(Disk)。對于用戶來說&#xff0c;能把RAM disk和通常的硬盤分區&#xff08;如/dev/hda1&#xff09;同等對待來使用&#xff0c;例如&#xff1a;redice # mkfs.ext2 /dev/ram0mke2fs 1.38 (30-Jun-200…

slab下kmalloc內核函數實現

文章目錄kmalloc的整體實現獲取高速緩存高速緩存獲取index總結https://blog.csdn.net/qq_41683305/article/details/124554490&#xff0c;在這篇文章中&#xff0c;我們介紹了伙伴算法、slab機制和常見的內存管理函數&#xff0c;接下來&#xff0c;我們看看kmalloc內核函數的…

PHP array_merge_recursive()函數與示例

PHP array_merge_recursive()函數 (PHP array_merge_recursive() function) array_merge_recursive() function is used to merge two or more arrays, it returns a new array with merged elements. The only difference between array_merge() and array_merge_recursive() …

標題:三羊獻瑞

標題&#xff1a;觀察下面的加法算式&#xff1a; 其中&#xff0c;相同的漢字代表相同的數字&#xff0c;不同的漢字代表不同的數字。 請你填寫“三羊獻瑞”所代表的4位數字&#xff08;答案唯一&#xff09;&#xff0c;不要填寫任何多余內容。 思路分析&#xff1a; 首先…

hdu 1069

地址&#xff1a;http://acm.hdu.edu.cn/showproblem.php?pid1069 題意&#xff1a;給定若干個木塊長寬高&#xff0c;長寬高可以自己調整&#xff0c;求堆積起來最高的高度。 mark&#xff1a;枚舉所有木塊長寬高可能情況&#xff0c;簡單dp。 代碼&#xff1a; #include <…

簡明 Python 編程規范

簡明 Python 編程規范編碼 所有的 Python 腳本文件都應在文件頭標上 # -*- coding:utf-8 -*- 。設置編輯器&#xff0c;默認保存為 utf-8 格式。注釋 業界普遍認同 Python 的注釋分為兩種的概念&#xff0c;一種是由 # 開頭的“真正的”注釋&#xff0c;另一種是 docstri…

進程虛擬地址管理

文章目錄1 地址分布實際使用中的內存區域2 進程的虛擬地址描述用戶空間mmap線程之間共享內存地址的實現機制1 地址分布 現在采用虛擬內存的操作系統通常都使用平坦地址空間&#xff0c;平坦地址空間是指地址空間范圍是一個獨立的連續空間&#xff08;比如&#xff0c;地址從0擴…

java兩個文件夾比較路徑_比較Java中兩個文件的路徑

java兩個文件夾比較路徑Given the paths of the two files and we have two compare the paths of the files in Java. 給定兩個文件的路徑&#xff0c;我們有兩個比較Java中文件的路徑。 Comparing paths of two files 比較兩個文件的路徑 To compare the paths of two file…

標題:加法變乘法

標題&#xff1a;我們都知道&#xff1a;123 … 49 1225 現在要求你把其中兩個不相鄰的加號變成乘號&#xff0c;使得結果為2015 比如&#xff1a; 123…10*1112…27*2829…49 2015 就是符合要求的答案。 請你尋找另外一個可能的答案&#xff0c;并把位置靠前的那個乘號左…

C# winform對話框用法大全收藏

對話框中我們常用了以下幾種&#xff1a; 1、文件對話框(FileDialog) 它又常用到兩個&#xff1a; 打開文件對話框(OpenFileDialog) 保存文件對話(SaveFileDialog) 2、字體對話框(FontDialog) 3、顏色對話框(&#xff23;olorDialog) 4、打印預瀏對話框(PrintPreviewDialog) 5、…