robots.txt 怎麼設定?如何禁止搜尋引擎爬取網站?2022 教學

by 貓熊先生
robots.txt

robots.txt 的主要功用在於,告訴搜尋引擎某個頁面是否應該爬取?當你在你的網站上加入 robots.txt 這個檔案,你就可以告訴搜尋引擎(例:Google 搜尋引擎),網站上哪些網址是可以爬取的,而哪些網址又是不可以爬取的。 robots.txt 這個檔案主要用來避免網站因要求過多而超載,而不是讓特定網頁無法出現在 Google 搜尋結果。如果你想要禁止自己的網頁出現在搜尋結果,你可以使用 noindex 標記,或是使用密碼來保護你的網頁。

robots.txt 主要就是讓你用來告訴 Google 搜尋引擎,哪些頁面不要被爬取,但是如果有其它網站加了一條連結到你的頁面上,該頁面還是有可能被索引。所以如果你想要讓某個頁面完全不要讓 Google 索引,你可以在網頁上加上 noindex 指令。

推薦閱讀:SEO 搜尋引擎優化學習指南!SEO 是什麼?SEO 怎麼做?

本篇文章會完整教學 robots.txt 在實務上的作用,以及說明對 SEO 會產生什麼影響。

robots.txt 是什麼?

robots.txt 是位於你網站上的一隻檔案,搜尋引擎會讀取 robots.txt 這個檔案,然後參考你給它的建議,這個建議可能是不要爬取某個目錄或是某個頁面,不過如果你在 robots.txt 上加入了某個不希望被搜尋引擎頁面索引的網址,該網址還是有可能被索引。

如果你希望某個網址不要被 Google 索引,你應該是用 noindex 而不是 robots.txt。

下面是 Google 官方說明,使用 robots.txt 無法決定你的某個頁面是否可以 100% 不被 Google 索引,要完全不被 Google 索引,要使用 noindex 標記。

robots.txt 是什麼?

robots.txt 怎麼做?

要加入 robots.txt 檔案的方法很簡單,就是在網址的根目錄下面,新增一個叫「robots.txt 」的檔案。

舉例來說,下面就是貓熊先生網站的 robots.txt 檔案。網址為:https://www.seo-panda.tw/robots.txt。

robots.txt 怎麼做?

上面的這個 robots.txt 檔案,就是在告訴搜尋引擎,不要存取 /wp-admin/ 網址下的頁面,但是 /wp-admin/admin-ajax.php 這隻檔案則是可以存取的。

另外上面這隻檔案還告訴了搜尋引擎,網站上的 Sitemap 檔案的位置在哪。

robots.txt 可以放在網站子目錄嗎?

可能有人會有一個問題,那就是可以把 robots.txt 這隻檔案放在網站上的子目錄下方嗎?答案是:不行。

robots.txt 這個檔案必須放在你的網站主機上的根目錄。比方說,如果你想要控制 https://www.abc.com/ 下所有網址的檢索作業,你的 robots.txt 檔案就必須放在 https://www.abc.com/robots.txt,不能在子目錄 (例如 https://www.abc.com/pages/robots.txt)。

robots.txt 規則與指令

知道 robots.txt 的用途以及應該將 robots.txt 檔案放在哪裡之後,接下來就是搞懂它的指令與規則了。下面整理常見的 robots.txt 規則。

  • User-agent:定義下面規則對哪些搜尋引擎檢索器有效。
  • Disallow:定義哪些目錄或是檔案類型不想要被檢索器檢索。
  • Allow:定義哪些目錄或是檔案類型可以被檢索器檢索。
  • Sitemap:指定你網站的 Sitemap 檔案所放置的位置,這個必須使用絕對路徑。

上面就是在寫入 robots.txt 這隻檔案時,最常見的幾種語法規則。

另外下面列出各種網站允許/不允許某個檢索器抓取的各種情況提供參考。

1.禁止檢索整個網站

要禁止 Google 爬取你網站上全部的頁面,可以在 robots.txt 檔案中加入以下。

User-agent: *
Disallow: /

User-agent 定義的對象為 「*」,表示適用所有檢索器。下面加了 Disallow 並定義為「/」,表示所有檢索器都不允許爬取網站。

2.禁止檢索特定目錄及其中內容

要禁止檢索器(例如 Googlebot)爬取你網站上某個目錄,可以在 robots.txt 檔案中加入以下。

User-agent: *
Disallow: /upload/
Disallow: /videos/

上面的意思是,不允許所有檢索器抓取 /upload/ 跟 /videos/ 這兩個目錄。

3.允許單一檢索器存取網站內容

要允許某個爬蟲爬取你的網站,其餘檢索器全部禁止,你可以在 robots.txt 檔案中加入以下。

User-agent: Googlebot
Allow: /
User-agent: *
Disallow: /

上面允許 Googlebot 爬取你的網站,但是其它檢索器全部禁止。

4.允許所有檢索器爬取網站,特定檢索器不允許

如果你要允許所有檢索器都可以爬取網站,但有個特定的爬蟲不允許,你可以在 robots.txt 檔案中加入以下。

User-agent: Googlebot
Disallow: /
User-agent: *
Allow: /

上面不允許 Googlebot 爬取你的網站,但是其它檢索器都可以。

5.禁止檢索單一網頁

要禁止檢索器爬取你網站上的某個頁面,你可以在 robots.txt 加入以下語法。

User-agent: *
Disallow: /abc.html

上面不允許所有檢索器爬取你網站上的 /abc.html 這個頁面,但是其它頁面都可以。

6.禁止檢索特定類型的檔案

要禁止檢索器檢索你網站上特定類型的檔案,你可以在 robots.txt 加入以下語法。

User-agent: Googlebot
Disallow: /*.png$

上面的語法會禁止 Google 檢索器檢索網站上所有的 PNG 圖片。

7.禁止 Google 圖片檢索器檢索特定圖片

如果你有一張圖片不想要被Google 圖片檢索器爬取,可以在 robots.txt 加入以下語法。

User-agent: Googlebot-Image
Disallow: /images/abc.jpg

8.禁止 Google 圖片檢索你的網站上所有圖片

如果你想禁止檢索的不只是一張圖片,而是網站上所有圖片,你可以在 robots.txt 檔案加入以下。

User-agent: Googlebot-Image
Disallow: /

9.使用 $ 比對特定字串結尾的網址

如果你是想透過比對網址的方式來禁止檢索器爬取,例如讓某個字串結尾的網址通通不要檢索,你可以在 robots.txt 加入以下語法。

User-agent: Googlebot
Disallow: /*.pdf$

上面就是禁止「 .pdf」 結尾的網址通通不要檢索,例如a.pdf、b.pdf、c.pdf…等等,通通不要被檢索。

10.robots.txt 中的 Crawl-deslay 語法

其實 robots.txt 中還有一個語法叫做「Crawl-deslay」,這是用來告訴檢索器爬取的間隔。由於 Crawl-deslay 幾乎不會用到,所以基本上可以忽略。下面簡單列出 Crawl-deslay 的語法規則。

User-agent: *
Crawl-delay: 15

上面的語法是告訴檢索器,下次再來訪的最短時間間隔是15秒。

如何測試 robots.txt 標記是否正確?

理解了如何在網站上加入 robots.txt 檔案,以及了解各種 robots.txt 的語法跟規則,你就可以測試一下自己加入的 robots.txt 語法是否正常。

首先,將你的 robots.txt 上傳到網站上的跟目錄下方之後,就可以使用 Google 本身提供的「robots.txt 測試工具」來進行線上測試。點擊下方網址進入。

進入「robots.txt 測試工具」之後,你可以選擇你在 Google search Console 驗證的資源,選好就可以前往測試工具頁面了。

robots.txt 測試工具

進入 robots.txt 測試工具頁面之後,你就會看到你的 robots.txt 檔案是否正確了。這個測試下方會列出「x個錯誤、x項警告」,確認都沒警告也沒錯誤,那這個 robots.txt 就可以正確運作了。

robots.txt 測試工具

更新 robots.txt 之後,如何提交給 Google?

一般來說,你是不需要特定告知搜尋引擎你已經更新了 robots.txt 的,因為搜尋引擎會自動抓取 robots.txt 並自己更新。

不過如果你原本的 robots.txt 有重大錯誤,你希望告訴 Google 趕快更新你的 robots.txt 檔案,那麼你可以使用「robots.txt 測試工具」來提交。

前往上面提到的「robots.txt 測試工具」,在測試工具頁面有一個「提交」按鈕,點下去就可以告訴 Google 趕快來重新爬取 robots.txt 了。

更新 robots.txt 之後,如何提交給 Google?

robots.txt 在 SEO 中扮演什麼角色?

從上面的教學中你會發現,robots.txt 跟關鍵字排名是無關的,robots.txt 僅僅是告訴檢索器哪些頁面可以爬取,哪些頁面不可以爬取。而且當你在 robots.txt 中告訴檢索器某個頁面不要被爬取時,該頁面還是有可能被索引。要讓某個頁面不要被 Google 索引,應該使用 noindex 標記才是。

使用 robots.txt 要注意什麼?

在 Google 搜尋引擎的運作方式中,「爬取」跟「索引」是不同的兩個概念。要禁止某個頁面不要被爬取跟禁止某個頁面不要被索引,需要使用兩個不同的處理方式。

  • robots.txt :禁止某個頁面被爬取
  • noindex meta robots 標記:禁止某個頁面被索引

也就是說,robots.txt 無法保證該頁面不被索引,因為有可能有其它網站建立了一條反向連結指到該頁面,導致該頁面在不被爬取的情況下,仍然被 Google 索引。

如果你想要讓某個頁面不被檢索器索引,你可以在該頁面的<head></head>區塊中加入以下語法:

<meta name=”robots” content=”noindex”>

在該頁面加入上述程式碼之後,該頁面就不會被檢索器索引。

另外,這裡需要搞懂一個概念: meta noindex 標記是禁止索引,而不是禁止爬取。也就是 noindex 不是告訴檢索器不要來爬取,而是告訴檢索器不要索引該頁面。

因為:如果檢索器連這個頁面都不爬取的話,是根本看不到 noindex 標記的

robots.txt 檔案格式跟規則

除了上面的觀念之外,還必須注意以下 robots.txt 的使用規則。

  • 檔案名稱必須是 robots.txt,也就是只能小寫不能大寫。
  • 網站只能有一個 robots.txt 檔案。
  • robots.txt 檔案必須位於網站的根目錄。
  • robots.txt 檔案必須是 UTF-8 編碼的文字檔案 (包括 ASCII),Google 會忽略不屬於 UTF-8 範圍的字元,這可能會導致 robots.txt 規則無法轉譯。

幾乎大部分的文字編輯器都可以用來建立 robots.txt 檔案,但是不建議使用文書處理軟體,因為這類型的軟體,常常都會有隱藏的程式碼,很容易產生問題。

要測試 robots.txt 是否能正常運作,可以使用上面提到的 robots.txt 測試工具。

robots.txt 常見問題

robots.txt 一定要放在網站的根目錄嗎?

是的,robots.txt 只能放在網站上的根目錄,放在子目錄是沒用的唷。

使用 robots.txt 禁止某頁面被檢索,該頁面就一定不會被索引嗎?

不,禁止被爬取不代表不會被索引,要禁止該頁面被索引,需要使用 noindex 標記。

robots.txt 檔名有大小寫分別嗎?

有喔,robots.txt 只能命名成小寫形式的「robots.txt 」,Robots.txt 或是 ROBOTS.txt 都是不正確的。

robots.txt 觀念總整理

下面重新整理,關於 robots.txt 你該知道的觀念。

2.robots.txt 是禁止爬取,而不是禁止索引。也就是即使你使用 robots.txt 禁止某個頁面不要被檢索器爬取,該頁面還是有可能被索引。要讓頁面不被索引,需要使用 noindex 標記。

3.下面這四個是 robots.txt 常用語法,Crawl-deslay 則幾乎不會用到。

User-agent:定義下面規則對哪些搜尋引擎檢索器有效。
Disallow:定義哪些目錄或是檔案類型不想要被檢索器檢索。
Allow:定義哪些目錄或是檔案類型可以被檢索器檢索。
Sitemap:指定你網站的 Sitemap 檔案所放置的位置,這個必須使用絕對路徑。

完整的各種 robots.txt 使用方式,可以參考本篇文章教學。