數位設計學堂背景
數位設計學堂Q & A

網頁已經進入新時代,好網站不再需要花大錢!

有網頁設計需求請與我們聯絡,新視野設計提供多種方案供您選擇。

  • #效益好≠比較貴
  • #優質附加服務,提升網站效益
  • #妥善規劃,提供多種方案選擇
線上諮詢
數位設計學堂 - Google資訊

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

當你希望網站內容出現在 Google、Bing 等搜尋引擎中時,搜尋引擎的爬蟲程式(又稱 bots、crawlers、spiders)會定期造訪網站、抓取頁面內容並更新搜尋資料庫。Google 也說明,網頁多數透過自動爬蟲發現與收錄,而非人工提交。

不過,並非所有頁面都適合讓搜尋引擎任意抓取。例如後台、測試頁、內部檔案、特定功能頁,甚至某些高資源消耗的路徑,站長通常會希望加以限制。這時候,robots.txt 就是最基本也最常用的控管工具。

什麼是 robots.txt?

robots.txt 是放在網站根目錄的純文字檔案,用來告訴搜尋引擎爬蟲:哪些網址可以抓、哪些不要抓。它屬於 Robots Exclusion Protocol(機器人排除協議)的一部分,這套協議已在 RFC 9309 正式標準化。但它本質上仍是「請求遵守的規範」,不是強制性的安全機制,也不是存取授權機制。

簡單來說:

  • 合規的搜尋引擎通常會先讀取 robots.txt
  • 惡意爬蟲、不守規矩的機器人不一定會遵守

因此 robots.txt 適合用於搜尋引擎管理
不適合作為真正的安全防護

若你要擋掉惡意機器人、垃圾爬蟲、異常高頻請求,應改用伺服器層級做法,例如防火牆、WAF、速率限制、.htaccess 或 Nginx 規則。

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 最常見的規則包括:

1. User-agent

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

User-agent: Googlebot

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

User-agent: *

2. Disallow

指定不允許抓取的路徑。

Disallow: /admin/

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

3. Allow

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

Allow: /images/public-logo.png

4. Sitemap

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

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

常見 robots.txt 設定範例

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

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

User-agent: *
Disallow:

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

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

User-agent: *
Disallow: /

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

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

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

User-agent: Baiduspider
Disallow: /

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

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

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

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

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

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

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

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

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

7. 加入 Sitemap

User-agent: *
Disallow:

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

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

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

開發站 / 測試站

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

User-agent: *
Disallow: /

但更穩妥的方式是:

  • 加上密碼保護
  • 只允許特定 IP
  • 不讓外部直接存取

因為 robots.txt 不是安全工具,寫了只是「請你別進來」,不是「你真的進不來」。

正式站

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

User-agent: *
Disallow: /

這種情況在 SEO 圈很常見,堪稱「上線即自我隱形術」。

robots.txt 與 noindex 的差別

這一段非常重要,建議你文章裡一定要講清楚。

robots.txt

用途:阻止爬蟲抓取

noindex

用途:告訴搜尋引擎不要把頁面收錄進索引

Google 官方文件明確表示,若你想避免頁面出現在 Google 搜尋中,應使用 noindex 或密碼保護,而不是只靠 robots.txt。

meta robots 範例

放在 HTML 的 <head> 裡:

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

X-Robots-Tag 範例

適合 PDF、圖片、非 HTML 檔案,可在 HTTP Header 設定:

X-Robots-Tag: noindex

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/

除非你非常確定這些資源不影響搜尋引擎理解頁面,否則通常不建議這樣做。

robots.txt 最常見的錯誤

1. 把正式站整站封鎖

User-agent: *
Disallow: /

這是最常見的大雷。

2. 以為 robots.txt 可以防止收錄

它只能阻擋抓取,不保證不索引。

3. 把檔案放錯位置

robots.txt 必須放在根目錄,放在子目錄是無效的。

4. 封鎖關鍵資源

像 CSS、JS、圖片等必要資源被擋住,可能讓搜尋引擎誤判頁面品質或內容結構。

5. 想用 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

Q1:robots.txt 可以讓頁面從 Google 搜尋結果中消失嗎?

不一定。robots.txt 只能阻止抓取,無法保證移除索引。若要讓頁面不出現在 Google 搜尋結果,應使用 noindex,或加上權限控管、密碼保護。

Q2:robots.txt 放在哪裡才正確?

必須放在網站根目錄,例如:

<https://example.com/robots.txt>

若放在子資料夾裡則無效。此外,它僅對同一協定、主機與連接埠有效。

Q3:我可以用 robots.txt 封鎖整個網站嗎?

可以,寫法如下:

User-agent: *
Disallow: /

但這通常只適合測試站或開發站,不適合正式站做 SEO。

Q4:Google 支援 Crawl-delay 嗎?

不支援。Google 已明確表示 crawl-delay 不是 Google 支援的 robots.txt 規則。

Q5:robots.txt 能擋住所有機器人嗎?

不能。它是規範,不是防火牆。守規矩的搜尋引擎通常會遵守,但惡意爬蟲不一定理會。RFC 9309 也明確指出,這不是授權控制機制。

Q6:我可以封鎖圖片、CSS、JavaScript 嗎?

技術上可以,但通常不建議。若封鎖了 Google 理解頁面所需的重要資源,可能影響頁面渲染與搜尋表現。

Q7:網站沒有 robots.txt 會怎樣?

搜尋引擎通常還是會照常抓取網站。robots.txt 不是被搜尋引擎找到的必要條件,而是用來管理抓取規則。

Q8:多個子網域需要共用一份 robots.txt 嗎?

不行。每個子網域應有自己的 robots.txt。例如:

  • https://www.example.com/robots.txt
  • https://blog.example.com/robots.txt

兩者是分開處理的。

結論

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

但你一定要記住:

robots.txt 是「爬取控制工具」,不是「索引刪除工具」,更不是「安全防護工具」。

如果搞混這三者,SEO 與網站管理很容易出現誤判。


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