當你希望網站內容出現在 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 與網站管理很容易出現誤判。