SEO GUIDE
SEO 指南 Q & A
技術 SEO

如何使用 robots.txt 阻止搜尋引擎爬取網站?完整教學與設定範例

如何使用 robots.txt 阻止搜尋引擎爬取網站?完整教學與設定範例

在 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。

範例位置

網址上的正確位置會像這樣:

URL
https://example.com/robots.txt

伺服器上的實體檔案位置則可能像這樣:

PATH
/home/username/public_html/robots.txt

如果網站還沒有這個檔案,可以用純文字編輯器自行建立,並以 UTF-8 純文字格式儲存。Google 也建議使用純文字格式建立 robots.txt。

robots.txt 的基本語法

robots.txt 最常見的規則包括以下四種。

User-agent

指定規則適用的爬蟲名稱。

ROBOTS.TXT
User-agent: Googlebot

若使用萬用字元 *,代表所有爬蟲:

ROBOTS.TXT
User-agent: *

Disallow

指定不允許抓取的路徑。

ROBOTS.TXT
Disallow: /admin/

這代表禁止爬取 /admin/ 這個資料夾下的內容。

Allow

在部分搜尋引擎(包含 Google)中,可用來指定某些路徑雖位於被封鎖目錄內,仍允許抓取。Google 支援 Allow 規則。

ROBOTS.TXT
Allow: /images/public-logo.png

Sitemap

可在 robots.txt 內附上網站 Sitemap 位置,協助搜尋引擎更有效率地發現網址。

ROBOTS.TXT
Sitemap: https://example.com/sitemap.xml

常見 robots.txt 設定範例

允許所有搜尋引擎抓取整個網站

預設不寫規則通常就是可抓取,但您也可以明確寫出來:

ROBOTS.TXT
User-agent: *
Disallow:

阻止所有搜尋引擎抓取整個網站

如果網站還在開發中、不希望被搜尋引擎抓取,可以這樣設定:

ROBOTS.TXT
User-agent: *
Disallow: /

這代表所有爬蟲都不要抓取任何頁面。

阻止特定搜尋引擎抓取整個網站

例如您想阻擋某個特定爬蟲:

ROBOTS.TXT
User-agent: Baiduspider
Disallow: /

這表示禁止 Baiduspider 抓取整個網站。

阻止所有搜尋引擎抓取特定資料夾

例如不想讓搜尋引擎抓取後台:

ROBOTS.TXT
User-agent: *
Disallow: /admin/
Disallow: /private/

阻止所有搜尋引擎抓取特定檔案

ROBOTS.TXT
User-agent: *
Disallow: /contactus.htm
Disallow: /store.htm
Disallow: /test-page.html

封鎖整個資料夾,但允許其中某個檔案

ROBOTS.TXT
User-agent: *
Disallow: /images/
Allow: /images/logo.png

這種寫法常用在您不想讓大量圖片被抓取,但又希望品牌 Logo 仍可被存取的情境。

加入 Sitemap

ROBOTS.TXT
User-agent: *
Disallow:

Sitemap: https://example.com/sitemap.xml

開發站與正式站的 robots.txt 建議

這是最常見、也最容易出事的地方。

開發站與測試站

若是 staging site、測試環境、暫時不公開的站點,可用:

ROBOTS.TXT
User-agent: *
Disallow: /

但更穩妥的方式是:

  • 加上密碼保護
  • 只允許特定 IP 存取
  • 不讓外部直接存取
務必記住:robots.txt 不是安全工具,寫了只是「請您別進來」,不是「您真的進不來」。真正不想外流的測試內容,一定要搭配權限控管。

正式站

正式站若要做 SEO,通常不應該整站封鎖。很多網站上線後排名一直沒起色,最後一看,兇手就是:

ROBOTS.TXT
User-agent: *
Disallow: /

這種情況在 SEO 圈很常見,堪稱「上線即自我隱形術」,改版交接時尤其容易發生。

robots.txt 與 noindex 的差別

這一段非常重要,建議您務必分清楚。兩者看似都是「不想讓頁面被看到」,作用點卻完全不同:robots.txt 管的是「要不要抓」,noindex 管的是「要不要收錄進索引」。下表整理三種常見的頁面控制方式,供您依情境選擇。

控制方式 主要用途 阻止抓取 阻止索引 適用情境
robots.txt(Disallow) 限制爬蟲抓取路徑 否(不保證) 後台、購物流程、站內搜尋等低價值路徑
meta noindex 告訴搜尋引擎不要收錄此頁 否(需可被抓取才生效) 感謝頁、篩選頁等不想出現在搜尋結果的頁面
密碼保護/登入 從根本限制存取權限 會員專區、後台、機密與測試內容
關鍵觀念:noindex 與 Disallow 不能同時對同一頁使用。因為爬蟲一旦被 robots.txt 擋住,就讀不到頁面裡的 noindex 指令,反而讓 noindex 失效。想去索引,就要讓爬蟲進得來讀到 noindex。

meta robots 範例

放在 HTML 的 <head> 裡:

HTML
<meta name="robots" content="noindex, nofollow">

X-Robots-Tag 範例

適合 PDF、圖片、非 HTML 檔案,可在 HTTP 回應標頭設定:

HTTP
X-Robots-Tag: noindex

關於 noindex、X-Robots-Tag、nofollow 等索引控制指令的完整說明,可延伸閱讀 Robots Meta;若您的情況其實是「多個網址內容重複、想讓 Google 擇一收錄」,該用的是 Canonical 標記,並參考 重複內容 的處理原則,而不是 robots.txt。

Google 支援 Crawl-delay 嗎?

很多舊文章會提到這樣的寫法:

ROBOTS.TXT
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 阻擋,可能導致頁面無法被正確處理。

不建議的例子

ROBOTS.TXT
User-agent: *
Disallow: /js/
Disallow: /css/

除非您非常確定這些資源不影響搜尋引擎理解頁面,否則通常不建議這樣做。現代 Google 會實際渲染頁面,關鍵樣式與腳本被擋住,反而可能拉低頁面品質評估。

robots.txt 最常見的錯誤

  • 把正式站整站封鎖 改版或上線時忘了移除 Disallow: /,等於把整站從搜尋結果隱形,是最常見的大雷。
  • 以為 robots.txt 可以防止收錄 它只能阻擋抓取,不保證不被索引。要去索引,請改用 noindex 或密碼保護。
  • 把檔案放錯位置 robots.txt 必須放在根目錄,放在子目錄或子資料夾裡是無效的。
  • 封鎖關鍵資源 像 CSS、JS、圖片等必要資源被擋住,可能讓搜尋引擎誤判頁面品質或內容結構。
  • 想用 robots.txt 擋惡意攻擊 它不是安全工具。真正的惡意流量應交給伺服器層、防火牆與流量管控處理。

建議的 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:主動提供網站地圖,讓搜尋引擎更有效率地發現新內容
提醒:實際情況應依網站架構調整,不要直接複製貼上就上線。在 SEO 領域,別人的配方不見得適合您的網站。

常見問答 FAQ

robots.txt 可以讓頁面從 Google 搜尋結果中消失嗎?
robots.txt 只能阻止爬蟲抓取頁面內容,並不能保證頁面從索引中移除。若某個被 Disallow 的網址被其他頁面連結指向,Google 仍可能知道它存在,甚至在搜尋結果顯示網址(只是沒有描述文字)。若您真的希望頁面不出現在搜尋結果,正確做法是使用 noindex 指令,或加上登入權限、密碼保護。要特別注意的是:noindex 與 Disallow 不能同時對同一頁使用,因為爬蟲一旦被擋住就讀不到 noindex 指令,反而讓它失效。
robots.txt 放在哪裡才正確?
robots.txt 必須放在網站主機的根目錄,也就是網域名稱後直接接檔名的位置,例如 https://example.com/robots.txt。若放在子資料夾內,搜尋引擎不會去讀取,等於沒有設定。此外,它的作用範圍只限同一個協定、主機與連接埠:https 與 http、主網域與子網域(如 blog.example.com)都算不同範圍,各自需要獨立的 robots.txt。台灣中小企業若同時經營主站與部落格子網域,務必分別檢查兩份檔案是否正確。
我可以用 robots.txt 封鎖整個網站嗎?
可以,寫法是在 User-agent: * 下加一行 Disallow: /,代表禁止所有爬蟲抓取任何頁面。這種設定適合尚未上線的開發站或測試環境,避免半成品內容被搜尋引擎收錄。但正式營運、想做 SEO 的網站絕對不能這樣寫,否則等於把自己從搜尋結果中隱形。實務上,許多網站上線後排名遲遲沒起色,最後查出來就是改版時忘了移除這行整站封鎖指令,是相當常見卻代價高昂的失誤。
Google 支援 Crawl-delay 嗎?
不支援。Google 已明確表示 crawl-delay 並非它認可的 robots.txt 規則,就算您在檔案裡寫了 Crawl-delay: 30,Googlebot 也不會據此放慢抓取速度。若擔心爬蟲造成伺服器負擔,正確做法是從伺服器承載能力、頁面回應速度與網站健康度著手,或透過 Google Search Console 反映抓取問題。部分其他搜尋引擎或第三方爬蟲可能會理會 Crawl-delay,但不能把它當成通用標準來依賴。
robots.txt 能擋住所有機器人嗎?
不能。robots.txt 本質上是一種「請求遵守」的規範,而不是強制性的防火牆。守規矩的主流搜尋引擎(如 Google、Bing)通常會先讀取並遵守它,但惡意爬蟲、內容盜取程式與垃圾機器人往往直接無視。RFC 9309 也明確指出,這套協議不是存取授權或安全控制機制。若要真正阻擋惡意流量,應改用伺服器層級的防護,例如防火牆、WAF、速率限制,或 .htaccess 與 Nginx 規則。
我可以封鎖圖片、CSS、JavaScript 嗎?
技術上可以,但多數情況並不建議。現代 Google 會實際渲染頁面來判斷內容與版面,如果重要的 CSS 或 JavaScript 被 robots.txt 擋住,Google 可能無法正確理解頁面結構,進而影響排名表現。過去確實有人習慣封鎖 /css/、/js/ 目錄以節省抓取資源,但這在講究頁面體驗的時代反而有害。除非您非常確定某些資源與搜尋引擎理解頁面完全無關,否則應讓渲染所需的關鍵資源保持可抓取。
網站沒有 robots.txt 會怎樣?
不會怎樣,搜尋引擎通常仍會照常抓取並收錄您的網站。robots.txt 並不是網站被找到或被索引的必要條件,它的角色是「管理與限制」抓取範圍,而非「開啟」抓取。當爬蟲找不到 robots.txt(伺服器回傳 404)時,多數搜尋引擎會視為沒有任何限制,放行抓取所有可存取的頁面。不過仍建議一般企業網站準備一份基本的 robots.txt,方便未來標註 Sitemap 位置與排除後台等頁面。
多個子網域需要共用一份 robots.txt 嗎?
不行,也無法共用。每個子網域都是獨立的主機,必須各自擁有自己的 robots.txt。例如 www.example.com 與 blog.example.com 是兩個不同範圍,www 根目錄下的 robots.txt 完全管不到 blog 子網域,反之亦然。台灣中小企業常見的情況是主站放官網、子網域放購物或部落格系統,這時就要分別在每個子網域的根目錄各放一份,並依該站需求設定 Disallow 與 Sitemap,才不會有漏網之魚。

結論

robots.txt 是網站技術 SEO 中非常重要的基礎檔案,適合用來管理搜尋引擎的抓取範圍,避免不必要頁面被反覆爬取、降低伺服器負擔,也能協助搜尋引擎更聚焦在重要內容上。更完整的技術 SEO 與索引管理脈絡,可參考 新視野 SEO 終極指南

但您一定要記住一件事:robots.txt 是「爬取控制工具」,不是「索引刪除工具」,更不是「安全防護工具」。如果搞混這三者,SEO 與網站管理很容易出現誤判。


歡迎推廣本文,請務必連結(LINK)本文出處:新視野網頁設計公司