“robots.txt”文件作為搜索引擎爬蟲訪問網站時的協議指令文件,其內容由一條或多條獨立記錄構成,記錄之間以空行進行明確分隔,結束符可為CR(回車符)、CR/NL(回車換行符)或NL(換行符)。每條記錄遵循嚴格的字段命名規范,其基本結構為“字段名:可選空格值可選空格”,其中字段名與值之間通過冒號分隔,前后允許存在空格字符以提升格式靈活性。文件支持使用井號(#)進行注釋,注釋行為從井號開始直至該行結束,注釋內容不會被搜索引擎爬蟲解析執行,其使用慣例與UNIX系統中的注釋規則保持一致,便于開發者對爬取規則進行說明和標注。
該文件的核心規則通常以一行或多行User-agent字段開始,后跟若干Disallow字段,必要時可搭配Allow字段共同作用。User-agent字段用于指定受robots.txt協議約束的搜索引擎爬蟲名稱,其值對應具體的爬蟲標識符(如Googlebot、Bingbot等)。當文件中包含多條User-agent記錄時,表明多個爬蟲將分別遵循對應的訪問規則,每條User-agent記錄獨立作用于其指定的爬蟲。若將該字段的值設為星號(),則表示協議對所有搜索引擎爬蟲均生效,需特別注意的是,文件中“User-agent: ”記錄僅能存在一條,以確保規則的統一性。
Disallow字段是定義訪問限制的核心,其值用于指定禁止爬蟲訪問的URL路徑,既可以是完整路徑(如“/admin/”),也可以是路徑前綴(如“/help”)。爬蟲將嚴格禁止訪問所有以Disallow字段值開頭的URL,例如“Disallow:/help”將同時覆蓋/help.html、/help/index.html等以“/help”開頭的所有路徑;而“Disallow:/help/”則僅禁止/help/index.html等以“/help/”開頭的路徑,但不禁止/help.html。若某條Disallow記錄的值為空(即“Disallow:”),則表示該網站的所有路徑均允許被爬蟲訪問,robots.txt文件中必須至少包含一條Disallow記錄,以確保訪問規則的明確性;若文件完全為空,則等同于對所有爬蟲開放整個網站的訪問權限。
Allow字段用于定義允許爬蟲訪問的URL路徑,與Disallow類似,其值可為完整路徑或路徑前綴,所有以Allow字段值開頭的URL均被明確授權訪問。需知網站所有URL默認處于允許訪問狀態,因此Allow字段通常需與Disallow字段協同配置,通過“先禁止后允許”的策略實現精細化的訪問控制,例如通過“Disallow: /”禁止所有路徑,再通過“Allow: /public/”開放公共目錄。需特別強調的是,Disallow與Allow記錄的排列順序具有關鍵意義,爬蟲將按照文件中的記錄順序進行匹配,一旦發現某條規則與目標URL匹配(無論是Allow還是Disallow),即依據該規則決定是否訪問,后續規則不再生效。
為提升規則的靈活性,robots.txt協議支持使用通配符“”和“$”實現模糊匹配。其中,“”可匹配0個或任意數量的字符,如“Disallow:/.jpg”將禁止所有.jpg圖片路徑;“$”則用于匹配行結束符,如“Disallow:/$”將禁止所有以“/”結尾的路徑。通配符的使用能幫助開發者更高效地定義復雜的訪問控制策略,避免冗余的規則列舉。