Home >> Blog >> 什麼是 robots.txt 文件?Robots.txt簡單教學
robots.txt
什麼是 robots.txt 文件?
robots.txt 是網站管理員創建的一個文案文件,用於指導網路機器人(通常是搜尋引擎機器人)如何抓取其網站上的頁面,控制那些頁面要被索引後再SEO優化,而哪一些頁面要避免被收錄。robots.txt 文件是機器人排除協議 (REP) 的一部分,該協議是一組網路標準定義,用於規範機器人如何抓取網路、訪問和索引內容,並將該內容提供給用戶。REP 還包括諸如meta robots之類的指令,以及關於搜尋引擎應如何處理連結(例如“follow”或“nofollow”)的頁面、子目錄或單一網域範圍的指令。
在執行中,robots.txt 文件指示某些用戶代理(網路抓取軟體)是否可以抓取網站的某些部分。這些爬網指令是通過“禁止”或“允許”某些(或所有)用戶代理的行為來指定的。
基本格式:
User-agent: [user-agent name]Disallow: [URL string not to be crawl]
這兩行一起被認為是一個完整的 robots.txt 文件——儘管一個 robots 文件可以包含多行用戶代理和指令(即禁止、允許、爬行延遲等)。
在 robots.txt 文件中,每組用戶代理指令顯示為離散集,由換行符分隔:
在具有多個用戶代理指令的 robots.txt 文件中,每個禁止或允許規則僅適用於該特定換行符分隔集中指定的用戶代理。如果文件包含適用於多個用戶代理的規則,則爬蟲將只關注(並遵循其中的指令)最具體的指令組。
範例:
Msnbot、discobot 和 Slurp 都被專門限制了,所以這些用戶代理只會關注 robots.txt 文件中它們的部分中的指令。所有其他用戶代理將遵循 user-agent: * 組中的指令。
示例 robots.txt:
以下是一些適用於www.example.com網站的 robots.txt 示例:
Robots.txt 文件網址:www.example.com/robots.txt
從所有內容中阻止所有網路爬蟲
用戶代理:* 禁止:/
在 robots.txt 文件中使用此語法會告訴所有網路爬蟲不要爬取www.example.com上的任何頁面,包括主頁。
允許所有網路爬蟲訪問所有內容
用戶代理:* 禁止:
在 robots.txt 文件中使用此語法會告訴網路爬蟲爬 取www.example.com上的所有頁面,包括主頁。
阻止來自特定文件夾的特定網路爬蟲
用戶代理:Googlebot 禁止:/example-subfolder/
此語法僅告訴 Google 的抓取工具(用戶代理名稱 Googlebot)不要抓取任何包含 URL 字符串www.example.com/example-subfolder/的頁面。
阻止來自特定網頁的特定網路爬蟲
用戶代理:Bingbot 禁止:/example-subfolder/blocked-page.html
此語法僅告訴 Bing 的爬蟲(用戶代理名稱 Bing)避免爬取位於www.example.com/example-subfolder/blocked-page.html 的特定頁面。
robots.txt 是如何工作的?
搜尋引擎有兩個主要工作:
- 爬網以發現內容;
- 索引該內容,以便可以將其提供給正在尋找訊息的搜尋者。
為了爬取網站,搜尋引擎會跟隨連結從一個單一網域到另一個單一網域——最終,爬取數十億個連結和網站。這種爬行行為有時被稱為“爬蟲”。
在到達一個網站之後,在爬取它之前,搜尋爬蟲會尋找一個 robots.txt 文件。如果找到,爬蟲將首先讀取該文件,然後再繼續瀏覽該頁面。由於 robots.txt 文件包含有關搜尋引擎應如何抓取的訊息,因此在那裡找到的訊息將指導抓取工具在此特定網站上的進一步操作。如果 robots.txt 文件不包含任何禁止用戶代理活動的指令(或者如果單一網域沒有 robots.txt 文件),它將繼續抓取單一網域上的其他訊息。
其他快速 robots.txt 必須知道的:
(下面更詳細地討論)
- 為了被找到,robots.txt 文件必須放在網站的頂級目錄中。
- Robots.txt 區分大小寫:文件必須命名為“robots.txt”(不是 Robots.txt、robots.TXT 或其他名稱)。
- 一些用戶代理(機器人)可能會選擇忽略您的 robots.txt 文件。這在惡意軟體機器人或電子郵件地址抓取工具等更邪惡的爬蟲中尤其常見。
- /robots.txt 文件是公開的:只需將 /robots.txt 添加到任何根域的末尾即可查看該網站的指令(如果該網站有robots.txt 文件!)。這意味著任何人都可以看到您想要或不想被抓取的頁面,因此不要使用它們來隱藏私人用戶訊息。
- 根域上的每個子域都使用單獨的 robots.txt 文件。這意味著 blog.example.com 和 example.com 都應該有自己的 robots.txt 文件(位於 blog.example.com/robots.txt 和 example.com/robots.txt)。
- 通常最佳做法是在 robots.txt 文件的底部指明與此域關聯的任何單一網域地圖的位置。這是一個例子:
技術 robots.txt 語法
robots.txt 語法可以被認為是 robots.txt 文件的“語言”。您可能會在 robots 文件中遇到五個常用術語。他們包括:
- 用戶代理:您向其提供抓取指令的特定網路爬蟲(通常是搜尋引擎)。大多數用戶代理的列表可以在這裡找到。
- Disallow:用於告訴用戶代理不要抓取特定 URL 的命令。每個 URL 只允許有一個“Disallow:”行。
- 允許(僅適用於 Googlebot):告訴 Googlebot 它可以訪問頁面或子文件夾的命令,即使其父頁面或子文件夾可能被禁止。
- Crawl-delay:爬蟲在加載和爬取頁面內容之前應該等待多少秒。請注意,Googlebot 不承認此命令,但可以在 Google Search Console 中設置抓取速度。
- 單一網域地圖:用於調用與此 URL 關聯的任何 XML 單一網域地圖的位置。請注意,此命令僅受Google、Ask、Bing 和 Yahoo 支持。
模式匹配
當涉及要阻止或允許的實際 URL 時,robots.txt 文件可能會變得相當複雜,因為它們允許使用模式匹配來覆蓋一系列可能的 URL 選項。Google 和 Bing 都支持兩個正則表達式,可用於識別 SEO 想要排除的頁面或子文件夾。這兩個字符是星號 (*) 和美元符號 ($)。
- * 是表示任意字符序列的通配符
- $ 匹配 URL 的結尾
Google在此處提供了大量可能的模式匹配語法和示例。
robots.txt 在網站上的什麼位置?
每當他們來到一個單一網域時,搜尋引擎和其他網路爬取機器人(如Facebook 的爬蟲、Facebot)都知道要查找 robots.txt 文件。但是,他們只會在一個特定位置查找該文件:主目錄(通常是您的根域或主頁)。如果用戶代理訪問www.example.com/robots.txt並沒有在其中找到 robots 文件,它將假定該單一網域沒有該文件並繼續抓取頁面上的所有內容(甚至可能在整個單一網域上)。即使 robots.txt 頁面確實存在於 example.com/index/robots.txt 或 www.example.com/homepage/robots.txt,用戶代理也不會發現它,因此該單一網域將被處理就好像它根本沒有機器人文件一樣。
為了確保找到您的 robots.txt 文件,請始終將其包含在您的主目錄或根域中。
為什麼需要 robots.txt?
Robots.txt 文件控制爬蟲對您網站某些區域的訪問。如果您不小心禁止 Googlebot 抓取您的整個網站 (!!),這可能會非常危險,但在某些情況下 robots.txt 文件可能非常方便。
一些常見的用例包括:
- 防止重複內容出現在 SERP 中(請注意,元機器人通常是更好的選擇)
- 將網站的整個部分保密(例如,您的工程團隊的臨時單一網域)
- 防止內部搜尋結果頁面出現在公共 SERP 上
- 指定單一網域地圖的位置
- 防止搜尋引擎索引您網站上的某些文件(圖像、PDF 等)
- 指定抓取延遲,以防止您的服務器在抓取工具一次加載多條內容時超載
如果您的單一網域上沒有您想要控制用戶代理訪問的區域,則您可能根本不需要 robots.txt 文件。
檢查您是否有 robots.txt 文件
不確定您是否有 robots.txt 文件?只需輸入您的根域,然後將 /robots.txt 添加到 URL 的末尾。例如,Moz 的機器人文件位於 moz.com/robots.txt。
如果沒有出現 .txt 頁面,則您當前沒有(實時)robots.txt 頁面。
如何創建 robots.txt 文件
如果您發現您沒有 robots.txt 文件或想要更改您的文件,創建一個是一個簡單的過程。Google 的這篇文章介紹了 robots.txt 文件的創建過程,該工具可讓您測試您的文件是否設置正確。
尋找一些創建機器人文件的練習?這篇部落格文章介紹了一些交互式示例。
SEO搜尋引擎優化最佳執行
- 確保您沒有阻止您想要抓取的網站的任何內容或部分。
- 被 robots.txt 阻止的頁面上的連結將不會被關注。這意味著 1.) 除非它們還連結自其他搜尋引擎可訪問的頁面(即未通過 robots.txt、meta robots 或其他方式阻止的頁面),否則連結的資源將不會被抓取並且可能不會被編入索引。2.) 沒有連結權益可以從被阻止的頁面傳遞到連結目標。如果您有希望將股權傳遞到的頁面,請使用 robots.txt 以外的其他阻止機制。
- 不要使用 robots.txt 來防止敏感數據(如私人用戶訊息)出現在 SERP 結果中。因為其他頁面可能直接連結到包含私人訊息的頁面(從而繞過您的根域或主頁上的 robots.txt 指令),它仍可能被編入索引。如果您想從搜尋結果中阻止您的頁面,請使用不同的方法,例如密碼保護或 noindex元指令。
- 一些搜尋引擎有多個用戶代理。例如,Google 使用 Googlebot 進行自然搜尋,使用 Googlebot-Image 進行圖像搜尋。來自同一搜尋引擎的大多數用戶代理都遵循相同的規則,因此無需為搜尋引擎的多個爬網程序中的每一個指定指令,但能夠這樣做確實允許您微調網站內容的爬網方式。
- 搜尋引擎會緩存 robots.txt 內容,但通常每天至少更新一次緩存內容。如果您更改文件並希望更快地更新它,您可以將您的 robots.txt 網址提交給 Google。
Robots.txt vs meta robots vs x-robots
這麼多機器人!這三種機器人指令有什麼區別?首先,robots.txt 是一個實際的文本文件,而meta 和 x-robots 是 meta 指令。除了它們實際上是什麼之外,這三者都有不同的功能。Robots.txt 指示單一網域或目錄範圍的爬網行為,而元和 x-robots 可以指示單個頁面(或頁面元素)級別的索引行為。