在 Google、Bing 與 ChatGPT、Perplexity、Google AI Overviews 等 AI 搜尋工具中,搜尋引擎的爬蟲程式(bots、crawlers、spiders)會定期造訪、抓取頁面並更新索引。不過並非所有頁面都適合被任意抓取,後台、測試頁、購物流程等路徑通常需要管理。robots.txt 就是最基本的爬取控管工具。本文帶您理解它的用途、語法、常見設定與最容易犯的錯誤。
什麼是 robots.txt?
robots.txt 是放在網站根目錄的純文字檔案,用來告訴搜尋引擎爬蟲:哪些網址可以抓、哪些不要抓。它屬於 Robots Exclusion Protocol(機器人排除協議)的一部分,這套協議已在 RFC 9309 正式標準化。但它本質上仍是「請求遵守的規範」,不是強制性的安全機制,也不是存取授權機制。
簡單來說:
- 合規的搜尋引擎通常會先讀取 robots.txt,再決定抓取範圍
- 惡意爬蟲、不守規矩的機器人不一定會遵守
因此,robots.txt 適合用於搜尋引擎的抓取管理,並不適合作為真正的安全防護。若您要擋掉惡意機器人、垃圾爬蟲、異常高頻請求,應改用伺服器層級的做法,例如防火牆、WAF、速率限制、.htaccess 或 Nginx 規則。
robots.txt 是爬取控制工具,不是索引刪除工具,更不是安全防護工具。
robots.txt 能做什麼?不能做什麼?
robots.txt 能做的事
robots.txt 主要用途是告訴搜尋引擎爬蟲不要抓取某些路徑,藉此避免不必要的資源消耗,或避免低價值頁面被反覆抓取。Google 也明確表示,robots.txt 主要用來管理爬蟲對站點的存取,並避免站點因抓取而過載。
robots.txt 不能保證的事
很多人誤以為:「只要寫進 robots.txt,該頁就不會出現在 Google。」這並不正確。Google 官方說明很明確:robots.txt 不是用來讓網頁不出現在 Google 搜尋結果中的機制。若要阻止頁面被收錄,應使用 noindex,或要求登入、密碼保護等方式。
也就是說:
- 阻止爬取不等於保證不被索引
- 若某頁面已被外部連結指向,搜尋引擎仍可能知道它的存在
- 只是因為無法正常抓取內容,顯示方式可能受到限制
robots.txt 應該放在哪裡?
robots.txt 必須放在網站的根目錄,而且它的規則只對該協定、主機、連接埠有效。也就是說:
- https://example.com/robots.txt 只控制 https://example.com/ 下的網址
- 不會自動套用到 http://example.com/
- 也不會自動套用到 https://blog.example.com/
Google 官方文件也明確指出,robots.txt 必須位於網站主機根目錄,且作用範圍只限該 host/protocol/port。
範例位置
網址上的正確位置會像這樣:
https://example.com/robots.txt
伺服器上的實體檔案位置則可能像這樣:
/home/username/public_html/robots.txt
如果網站還沒有這個檔案,可以用純文字編輯器自行建立,並以 UTF-8 純文字格式儲存。Google 也建議使用純文字格式建立 robots.txt。
robots.txt 的基本語法
robots.txt 最常見的規則包括以下四種。
User-agent
指定規則適用的爬蟲名稱。
User-agent: Googlebot
若使用萬用字元 *,代表所有爬蟲:
User-agent: *
Disallow
指定不允許抓取的路徑。
Disallow: /admin/
這代表禁止爬取 /admin/ 這個資料夾下的內容。
Allow
在部分搜尋引擎(包含 Google)中,可用來指定某些路徑雖位於被封鎖目錄內,仍允許抓取。Google 支援 Allow 規則。
Allow: /images/public-logo.png
Sitemap
可在 robots.txt 內附上網站 Sitemap 位置,協助搜尋引擎更有效率地發現網址。
Sitemap: https://example.com/sitemap.xml
常見 robots.txt 設定範例
允許所有搜尋引擎抓取整個網站
預設不寫規則通常就是可抓取,但您也可以明確寫出來:
User-agent: *
Disallow:
阻止所有搜尋引擎抓取整個網站
如果網站還在開發中、不希望被搜尋引擎抓取,可以這樣設定:
User-agent: *
Disallow: /
這代表所有爬蟲都不要抓取任何頁面。
阻止特定搜尋引擎抓取整個網站
例如您想阻擋某個特定爬蟲:
User-agent: Baiduspider
Disallow: /
這表示禁止 Baiduspider 抓取整個網站。
阻止所有搜尋引擎抓取特定資料夾
例如不想讓搜尋引擎抓取後台:
User-agent: *
Disallow: /admin/
Disallow: /private/
阻止所有搜尋引擎抓取特定檔案
User-agent: *
Disallow: /contactus.htm
Disallow: /store.htm
Disallow: /test-page.html
封鎖整個資料夾,但允許其中某個檔案
User-agent: *
Disallow: /images/
Allow: /images/logo.png
這種寫法常用在您不想讓大量圖片被抓取,但又希望品牌 Logo 仍可被存取的情境。
加入 Sitemap
User-agent: *
Disallow:
Sitemap: https://example.com/sitemap.xml
開發站與正式站的 robots.txt 建議
這是最常見、也最容易出事的地方。
開發站與測試站
若是 staging site、測試環境、暫時不公開的站點,可用:
User-agent: *
Disallow: /
但更穩妥的方式是:
- 加上密碼保護
- 只允許特定 IP 存取
- 不讓外部直接存取
正式站
正式站若要做 SEO,通常不應該整站封鎖。很多網站上線後排名一直沒起色,最後一看,兇手就是:
User-agent: *
Disallow: /
這種情況在 SEO 圈很常見,堪稱「上線即自我隱形術」,改版交接時尤其容易發生。
robots.txt 與 noindex 的差別
這一段非常重要,建議您務必分清楚。兩者看似都是「不想讓頁面被看到」,作用點卻完全不同:robots.txt 管的是「要不要抓」,noindex 管的是「要不要收錄進索引」。下表整理三種常見的頁面控制方式,供您依情境選擇。
| 控制方式 | 主要用途 | 阻止抓取 | 阻止索引 | 適用情境 |
|---|---|---|---|---|
| robots.txt(Disallow) | 限制爬蟲抓取路徑 | 是 | 否(不保證) | 後台、購物流程、站內搜尋等低價值路徑 |
| meta noindex | 告訴搜尋引擎不要收錄此頁 | 否(需可被抓取才生效) | 是 | 感謝頁、篩選頁等不想出現在搜尋結果的頁面 |
| 密碼保護/登入 | 從根本限制存取權限 | 是 | 是 | 會員專區、後台、機密與測試內容 |
meta robots 範例
放在 HTML 的 <head> 裡:
<meta name="robots" content="noindex, nofollow">
X-Robots-Tag 範例
適合 PDF、圖片、非 HTML 檔案,可在 HTTP 回應標頭設定:
X-Robots-Tag: noindex
關於 noindex、X-Robots-Tag、nofollow 等索引控制指令的完整說明,可延伸閱讀 Robots Meta;若您的情況其實是「多個網址內容重複、想讓 Google 擇一收錄」,該用的是 Canonical 標記,並參考 重複內容 的處理原則,而不是 robots.txt。
Google 支援 Crawl-delay 嗎?
很多舊文章會提到這樣的寫法:
User-agent: *
Crawl-delay: 30
但這裡要特別修正:Google 不支援 crawl-delay 規則。Google 官方已明確說明,像 crawl-delay、noindex、nofollow 這類並非 Google 支援的 robots.txt 規則。
所以如果您的目標是控制 Googlebot 的抓取速率,不能單靠在 robots.txt 寫 Crawl-delay 期待它乖乖放慢。針對真正的過度抓取問題,Google 建議從站點可用性、伺服器承載、抓取效率等方向處理。若是其他搜尋引擎或第三方爬蟲,有些可能會理會 Crawl-delay,但不能把它當成通用標準。
要不要封鎖 CSS、JS、圖片?
一般情況下,不要隨便封鎖重要的 CSS、JavaScript 與必要資源。如果 Google 無法讀取頁面重要資源,可能影響它對頁面內容與版面的理解。Google 官方也提醒,若重要資源被 robots.txt 阻擋,可能導致頁面無法被正確處理。
不建議的例子
User-agent: *
Disallow: /js/
Disallow: /css/
除非您非常確定這些資源不影響搜尋引擎理解頁面,否則通常不建議這樣做。現代 Google 會實際渲染頁面,關鍵樣式與腳本被擋住,反而可能拉低頁面品質評估。
robots.txt 最常見的錯誤
-
把正式站整站封鎖
改版或上線時忘了移除
Disallow: /,等於把整站從搜尋結果隱形,是最常見的大雷。 - 以為 robots.txt 可以防止收錄 它只能阻擋抓取,不保證不被索引。要去索引,請改用 noindex 或密碼保護。
- 把檔案放錯位置 robots.txt 必須放在根目錄,放在子目錄或子資料夾裡是無效的。
- 封鎖關鍵資源 像 CSS、JS、圖片等必要資源被擋住,可能讓搜尋引擎誤判頁面品質或內容結構。
- 想用 robots.txt 擋惡意攻擊 它不是安全工具。真正的惡意流量應交給伺服器層、防火牆與流量管控處理。
建議的 robots.txt 範本
如果您是一般企業網站,這是一個相對穩健的基本版本:
User-agent: *
Disallow: /admin/
Disallow: /cart/
Disallow: /checkout/
Disallow: /member/
Disallow: /search?
Allow: /
Sitemap: https://example.com/sitemap.xml
說明
/admin/:後台不需要被抓取/cart/、/checkout/:購物流程頁通常不需要出現在搜尋結果中/member/:會員專區不建議開放抓取/search?:站內搜尋結果頁通常不建議索引或過度抓取Sitemap:主動提供網站地圖,讓搜尋引擎更有效率地發現新內容
常見問答 FAQ
robots.txt 可以讓頁面從 Google 搜尋結果中消失嗎?
robots.txt 放在哪裡才正確?
我可以用 robots.txt 封鎖整個網站嗎?
Google 支援 Crawl-delay 嗎?
robots.txt 能擋住所有機器人嗎?
我可以封鎖圖片、CSS、JavaScript 嗎?
網站沒有 robots.txt 會怎樣?
多個子網域需要共用一份 robots.txt 嗎?
結論
robots.txt 是網站技術 SEO 中非常重要的基礎檔案,適合用來管理搜尋引擎的抓取範圍,避免不必要頁面被反覆爬取、降低伺服器負擔,也能協助搜尋引擎更聚焦在重要內容上。更完整的技術 SEO 與索引管理脈絡,可參考 新視野 SEO 終極指南。
但您一定要記住一件事:robots.txt 是「爬取控制工具」,不是「索引刪除工具」,更不是「安全防護工具」。如果搞混這三者,SEO 與網站管理很容易出現誤判。