robots.txt 完全掌握:控制爬蟲與優化抓取預算的 15 條關鍵規則

在 SEO 的世界裡,我們經常追求如何讓更多流量進入網站,但卻往往忽略了一個核心問題:「你是否在浪費搜尋引擎的精力?」

當搜尋引擎的爬蟲(如 Googlebot)造訪你的網站時,它們並非無限期地停留。每個網站都有一個所謂的「抓取預算」(Crawl Budget)。如果你的網站充斥著大量的重複內容、無意義的參數網址、或是過時的暫存檔案,爬蟲就會在這些「垃圾路徑」上耗盡資源,進而導致你真正重要的產品頁或文章頁面無法被及時抓取與索引。

這就是 robots.txt 出場的時刻。它不只是一個簡單的文字檔,它是你與搜尋引擎溝通的「交通管制指令」。透過正確配置 robots.txt,你可以引導爬蟲走向正確的道路,優化抓取預算,並提升整體的 SEO 表現。


什麼是 robots.txt?為什麼它是 SEO 的隱形守門員?

理解爬蟲的工作原理:抓取(Crawling)與索引(Indexing)

在深入規則之前,我們必須釐清兩個容易混淆的概念:抓取(Crawling)與索引(Indexing)。

  • 抓取(Crawling):這是爬蟲訪問你的網頁,讀取內容並發現新連結的過程。
  • 索引(Indexing):這是搜尋引擎將抓取到的內容存入資料庫,並在使用者搜尋時顯示出來的過程。

robots.txt 的功能是控制「抓取」。如果你在 robots.txt 中禁止了某個路徑,爬蟲就不會進入該路徑進行抓取。然而,這並不代表該頁面會從 Google 搜尋結果中完全消失(如果其他網站連結了該頁面,它仍可能被索引),但它能確保爬蟲不會浪費時間在不必要的頁面上。

抓取預算(Crawl Budget)的重要性

對於大型網站(例如電商或新聞網站)來說,抓取預算至關重要。如果 Googlebot 每天只分配給你的網站 1,000 個抓取配額,而你的網站有 10 萬個頁面,那麼你必須確保這 1,000 個配額都花在「有價值的頁面」上。

如果你的 robots.txt 配置不當,讓爬蟲去抓取成千上 萬個篩選器產生的重複網址,你的核心內容就會被擠出抓取範圍,導致搜尋排名下滑。


robots.txt 語法基礎:指令解析與基本結構

要達到 robots.txt 完全掌握 的境界,首先要理解最基本的語法邏輯。robots.txt 是由一系列的「指令對」組成的。

核心指令解析

  1. User-agent: 指定這條規則適用於哪一個爬蟲。* 代表所有爬蟲。
  2. Disallow: 告訴爬蟲「不要」進入哪些路徑。
  3. Allow: 告訴爬蟲「可以」進入某些被 Disallow 涵蓋的子路徑(用於例外處理)。
  4. Sitemap: 直接告訴爬蟲你的網站地圖在哪裡,縮短發現新內容的時間。

指令功能比較表

指令 功能說明 對 SEO 的影響
User-agent: * 適用於所有搜尋引擎爬蟲 建立全站性的基本規範
Disallow: / 禁止抓取網站上的所有內容 極高風險,除非是開發環境,否則會導致網站從搜尋消失
驗證與優化
Disallow: /admin/ 禁止抓取特定目錄 保護後台路徑,節省抓取預算
Allow: /admin/public/ 在禁止的目錄中允許特定路徑 精細化控制,讓重要資源被抓取
Sitemap: [URL] 指向網站地圖路徑 加速新頁面的發現與索引

實戰教學:控制爬蟲的 15 條關鍵規則詳解

為了讓你真正掌握 robots.txt 的運用,我們將規則分為「基礎防禦」、「參數管理」、「檔案控制」與「進階優化」四個層次。

第一層:基礎防禦(建立網站架構邊界)

1. 全站封鎖規則 (Disallow: /)

這是最危險的規則。通常僅用於開發環境(Staging site)或測試伺服器,防止未完成的內容被收錄。

User-agent: *
Disallow: /

2. 保護後台與管理目錄 (Disallow: /admin/)

你不希望 Google 索引你的後台登入頁或管理介面,這不僅是為了 SEO,也是為了基本的安全性。

User-agent: *
Disallow: /admin/
Disallow: /wp-admin/

3. 排除特定子目錄的例外規則 (Allow: /admin/public/)

如果你封鎖了 /admin/,但其中有一個公開的資源檔需要被索引,你可以使用 Allow。

User agent: *
Disallow: /admin/
Allow: /admin/public/assets/

4. 禁止抓取系統腳本與暫存目錄 (Disallow: /cgi-bin/)

許多舊式的伺服器腳本目錄對 SEO 毫無價值,封鎖它們能減少無謂的抓取。

User-agent: *
Disallow: /cgi-bin/
Disallow: /tmp/

第二層:參數管理(解決重複內容問題)

5. 處理 URL 參數與篩選器 (Disallow: /*?)

電商網站最常遇到的問題是:使用者點擊「價格由高到低」或「顏色」時,會產生大量帶有 ?sort=price 的網址。這些網址與原頁面內容高度重複,必須封鎖。

User-alt: *
Disallow: /*?*

站內搜尋產生的結果頁(Search Result Pages)通常是低價值的,且容易造成無限循環的抓取陷阱。

User-agent: *
Disallow: /search/

7. 處理追蹤參數 (Disallow: /*utm_*)

如果你使用 UTM 參數進行行銷追蹤,這些參數會產生與原網址相同的內容。雖然 Google 現在能處理一部分,但主動封鎖可以保持抓取預算的乾淨。

User-agent: *
Disallow: /*utm_*

第三層:檔案與資源控制(優化抓取深度)

8. 封鎖特定檔案類型 (Disallow: /*.pdf)

如果你的網站有大量的 PDF 說明書,且你不希望這些 PDF 出現在搜尋結果中,可以這樣設定。

User-agent: *
Disallow: /*.pdf

9. 封鎖圖片資源 (Disallow: /images/private/)

對於不希望出現在 Google 圖片搜尋中的敏感圖片,應透過路徑進行封鎖。

User-agent: *
Disallow: /images/private/

10. 處理舊版存檔路徑 (Disallow: /archive/)

對於過時、不再更新且對使用者無意義的舊文章存檔,可以考慮封鎖,以集中權重到現有的優質內容。

User-agent: 
Disallow: /archive/

第四層:進階策略與維護

11. 針對特定爬蟲進行差異化配置 (User-agent: Bingbot)

有時你可能希望 Google 抓取所有內容,但對 Bingbot 稍微嚴格一點,以節省伺服器負載。

User-agent: Bingbot
Disallow: /unimportant-folder/

12. 使用萬用字元進行模糊匹配 (Disallow: /temp*)

如果你有一系列以 temp 開頭的資料夾(如 temp_1, temp_2),使用星號可以一次搞定。

User-agent: *
Disallow: /temp*

13. 結尾符號的精準控制 (Disallow: /product/old$)

如果你只想封鎖「完全等於」該路徑的網址,而不包括子路徑,可以使用 $。

User-agent: *
Disallow: /product/old$

14. 標記 Sitemap 位置 (Sitemap: [URL])

這是最重要的一條規則,它能主動告知爬蟲網站的結構。

Sitemap: https://www.yourdomain.com/sitemap_index.xml

15. 處理使用者生成內容 (UGC) 的風險 (Disallow: /user/profile/)

如果你的網站允許使用者建立個人檔案頁面,且這些頁面內容品質參差不齊,封鎖它們可以避免網站整體品質下降。

User-alt: *
Disallow: /user/profile/

綜合範例程式碼區塊

以下是一個針對標準電商網站優化後的 robots.txt 範例,結合了上述多種規則:

# ---------------------------------------------------------
# Robots.txt Configuration for E-commerce Site
# ---------------------------------------------------------

User-agent: *

# 1. 封鎖後台與系統路徑
Disallow: /admin/
Disallow: /wp-admin/
Disallow: /cgi-bin/
Disallow: /tmp/

# 2. 封鎖低價值搜尋與篩選頁面 (防止重複內容)
Disallow: /search/
Disallow: /*?sort=
Disallow: /*?filter=
Disallow: /*utm_*

# 3. 封鎖使用者生成內容與個人化頁面
Disallow: /user/profile/
Disallow: /account/

# 4. 封鎖不必要的檔案類型
Disallow: /*.pdf
Disallow: /*.zip

# 5. 允許重要的 CSS 與 JS (確保爬蟲能正確渲染頁面)
Allow: /wp-includes/*.js
Allow: /wp-includes/*.css

# 6. 宣告網站地圖
Sitemap: https://supertools.tw/sitemap.xml

避免致命錯誤:robots.txt 的常見 SEO 陷阱

在實施上述規則時,請務必警惕以下三個足以毀掉 SEO 的錯誤。

錯誤地封鎖了 CSS 與 JavaScript

這是近年來最常見的錯誤。現代的搜尋引擎(尤其是 Google)需要「渲染」網頁,也就是像瀏覽器一樣讀取 CSS 和 JS 來判斷頁面佈局。如果你在 robots.txt 中封鎖了 /css/ 或 /js/ 目錄,Googlebot 可能會看到一個破碎、沒有樣式的網頁,這會導致你的頁面被判定為「行動裝置不友善」或「內容品質低劣」,嚴重影響排名。

誤以為 robots.txt 可以實現「隱私保護」

請記住:robots.txt 不是安全工具。 它只是一種「請求」,告訴良善的爬蟲不要進入。惡意的爬蟲(如 Scrapers 或駭客工具)完全會忽略這個檔案。如果你有敏感的客戶資料或私密文件,絕對不能依賴 robots.txt 來隱藏,你應該使用伺服器端的身份驗證(如 .htaccess 或登入機制)。

導致「重複內容」與「索引缺失」的邏輯矛盾

如果你封鎖了一個頁面,但該頁面卻有大量的外部連結指向它,Google 仍可能將其索引。這會造成一種尷尬的狀況:頁面出現在搜尋結果中,但當使用者點擊時,卻因為爬蟲無法抓取內容而顯示「資訊不足」。此時,你應該配合使用 noindex 標籤,而不是單靠 robots.txt。


如何測試與驗證你的 robots.txt 配置?

在部署新的 robots.txt 之前,務必進行測試。

使用 Google Search Console 的檢查工具

Google Search Console 提供了一個「robots.txt 測試工具」(雖然目前正逐漸整合進新的檢查器中),你可以輸入你的規則,並輸入一個網址,查看 Google 是否會遵循你的指令。這是最權威的驗證方式。

使用 Super Tools robots.txt 產生器與檢查器 進行預檢

在正式上線前,建議使用專業的工具進行邏輯檢查。透過 Super Tools robots.txt 產生器與檢查器,你可以快速模擬爬蟲的行為,確認你的 Disallow 與 Allow 規則是否產生了預期的效果,避免因一個小小的斜線(/)錯誤而導致全站失聯。

觀察抓取頻率與錯誤報告

部署新規則後,請持續觀察 Google Search Console 中的「抓取統計數據」(Crawl Stats)。如果發現「抓取錯誤」或「被 robots.txt 封鎖」的數量異常飆升,代表你的規則可能誤傷了重要頁面。


進階策略:優化抓取預算的深度應用

針對不同爬蟲的差異化配置

如果你的網站同時依賴 Google、Bing 與 DuckDuckGo,你可以針對不同的爬蟲特性進行微調。例如,針對對伺服器壓力較大的爬蟲,你可以利用 Crawl-delay 指令(雖然 Google 不支援,但某些其他爬蟲仍會參考)來緩解伺服器負擔。

結合 SEO 稽核流程 的全面規劃

robots.txt 的優化不應該是孤立的動作。它應該是你整體 SEO 稽核的一部分。當你在進行網站健康檢查時,應同時檢查: 1. Sitemap 是否完整? 2. 是否有大量重複的 URL 參數? 3. 是否有頁面使用了 noindex 但卻在 robots.txt 中被封鎖?

透過系統化的檢視,才能確保抓取預算被精準地分配到最有價值的內容上。


FAQ:關於 robots.txt 的常見問題

1. robots.txt 會讓頁面從 Google 索引中完全消失嗎?

不會。robots.txt 僅控制「抓取」。如果其他網站連結了該頁面,Google 仍可能將其索引,但不會抓取其內容。若要徹底從搜尋結果移除,請使用 noindex 標籤。

2. 如果我想讓某個頁面不被索引,應該用 noindex 還是 robots.txt?

如果你希望該頁面完全不出現在搜尋結果中,請使用 noindex 標籤。如果你使用 robots.txt 封鎖了它,Google 就無法讀取到頁面上的 noindex 指令,反而可能導致該頁面出現在搜尋結果中。

3. robots.txt 可以防止別人盜用我的內容嗎?

不能。robots.txt 僅對搜尋引擎爬蟲有效。對於想要盜用內容的惡意爬蟲,它完全沒有防禦力,你仍需要使用內容保護技術或 IP 封鎖。

4. 為什麼我修改了 robots.txt,Google 卻沒有立刻更新?

Google 並不會每次造訪網站時都重新下載 robots.txt。它會緩存這個檔案一段時間。你可以透過 Google Search Console 重新提交 Sitemap,或等待 Google 下一次抓取 robots.txt。

5. 可以在 robots.txt 中設定抓取頻率嗎?

你可以使用 Crawl-delay 指令來要求爬蟲放慢速度,但請注意,Googlebot 目前並不支援此指令,它會根據伺服器的負載能力自動調整。

6. 什麼時候應該使用萬用字元 (* 或 $)?

當你需要進行模糊匹配(例如封鎖所有以 temp 開頭的資料夾)時使用 *;當你需要精確匹配(例如僅封鎖特定的單一網址)時使用 $。


結論

掌握 robots.txt 完全掌握 的核心,並非學習如何寫出複雜的程式碼,而是學會如何「管理資源」。

一個完美的 robots.txt 配置,應該像是一位精明的網站管理員:它能引導爬蟲避開垃圾路徑(重複參數、後台、暫存檔),同時確保所有重要的路徑(產品、文章、CSS、JS)都暢通無阻。透過精確的規則配置,你將能有效提升抓取預算,讓搜尋引擎將精力集中在能為你帶來轉化的核心內容上,這才是 SEO 長期成功的關鍵。