技術 SEO 裡有個令人意外的常見失誤:把自己網站的重要頁面擋在 robots.txt 裡。不管是 WordPress 設定失誤讓整個網站變成 Disallow: /,還是工程師在開發環境時加了封鎖規則卻忘記在正式環境移除,這類問題都會直接讓你的自然搜尋流量歸零。
在你動手設定 robots.txt 之前,先搞清楚它是什麼、能做什麼、以及有哪些常見的危險操作。
1. robots.txt 是什麼
robots.txt 是放在網站根目錄的一個純文字檔案,位置固定在 https://你的網站.com/robots.txt。它的作用是告訴搜尋引擎爬蟲(bot):哪些路徑可以爬取、哪些路徑不要爬取。
幾個重要的觀念:
robots.txt 是「建議」而非「強制」
遵守 robots.txt 是業界慣例(Robots Exclusion Protocol),主流搜尋引擎(Google、Bing、Yahoo)都會遵守。但這不是技術層面的強制機制——惡意爬蟲可以完全無視 robots.txt 的規則。所以如果你的目的是「阻止惡意爬蟲」,robots.txt 不是正確的工具;如果你的目的是「控制搜尋引擎爬蟲的行為」,robots.txt 是標準方法。
robots.txt 控制爬取,不控制索引
這是最多人搞混的地方。用 robots.txt 封鎖一個頁面,代表 Google 爬蟲不會去「爬取」那個頁面,但 Google 仍然可能「索引」那個頁面——如果有其他網站連結指向那個 URL,Google 可能知道它的存在,並在搜尋結果中顯示那個 URL,只是沒有實際內容的摘要。
如果你真的要讓一個頁面完全不出現在搜尋結果中,應該在頁面的 HTML head 區段加入 <meta name="robots" content="noindex">,而不是只靠 robots.txt。
根據 Google 的官方說明,他們每天爬取數百億個頁面,robots.txt 是管理爬取預算(Crawl Budget)的重要工具——你不希望 Google 的爬取預算浪費在無意義的頁面上,例如後台登入頁、測試頁面、或是有大量重複內容的 URL 參數頁面。
2. 語法規則
robots.txt 的語法很簡單,但容易在細節上出錯。
基本語法結構
User-agent: [爬蟲名稱]
Disallow: [不允許爬取的路徑]
Allow: [允許爬取的路徑(可選)]
Sitemap: [Sitemap 的完整 URL]
User-agent
指定這條規則針對哪個爬蟲。* 代表所有爬蟲,Googlebot 只針對 Google 爬蟲,Bingbot 只針對 Bing 爬蟲。
# 針對所有爬蟲的規則
User-agent: *
Disallow: /admin/
# 只針對 Googlebot 的規則
User-agent: Googlebot
Disallow: /staging/
Disallow
Disallow: 後面接路徑。空值代表允許爬取所有路徑(等同於沒有限制):
# 完全不限制
User-agent: *
Disallow:
# 封鎖整個網站(危險!不要輕易使用)
User-agent: *
Disallow: /
# 封鎖特定目錄
User-agent: *
Disallow: /wp-admin/
Disallow: /private/
Allow
Allow: 用來在某個被封鎖的目錄下開放特定路徑。例如,你封鎖了 /wp-admin/,但想讓 Google 能爬取 /wp-admin/admin-ajax.php:
User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
路徑配對規則
/admin/— 只匹配/admin/目錄/admin— 匹配所有以/admin開頭的路徑(包括/adminfoo)/*.php$— 使用通配符,匹配所有 .php 結尾的路徑*是通配符,匹配任意字元$表示路徑結束
# 封鎖所有帶有 ?sessionid= 參數的 URL
User-agent: *
Disallow: /*?sessionid=
3. 常見設定範例
WordPress 網站標準設定
User-agent: *
Disallow: /wp-admin/
Disallow: /wp-includes/
Disallow: /wp-content/plugins/
Allow: /wp-admin/admin-ajax.php
Allow: /wp-content/uploads/
Sitemap: https://www.example.com/sitemap_index.xml
說明:封鎖 WordPress 後台和程式目錄,但允許 admin-ajax.php(部分外掛需要這個來運作)和上傳目錄(讓 Google 可以爬取圖片)。
電商網站設定(避免參數頁面浪費爬取預算)
User-agent: *
Disallow: /cart/
Disallow: /checkout/
Disallow: /account/
Disallow: /*?sort=
Disallow: /*?filter=
Disallow: /*?page=
Sitemap: https://www.example.com/sitemap.xml
說明:封鎖結帳、購物車和帳戶相關頁面(這些頁面不需要索引),以及 URL 參數產生的重複頁面。
開發或測試環境(正式環境勿用)
# 這個設定只能用在 staging 或 dev 環境!
User-agent: *
Disallow: /
這個設定會封鎖整個網站,只適合在測試環境防止 Google 索引到開發中的內容。如果這個設定不小心被部署到正式環境,會導致整個網站從搜尋結果消失。
4. 不該封鎖的頁面
這是 robots.txt 最容易犯下嚴重錯誤的地方。以下幾類頁面絕對不能封鎖:
CSS 和 JavaScript 檔案
Google 需要能讀取你網站的 CSS 和 JavaScript,才能正確理解和渲染你的頁面內容。舊版 WordPress 的 robots.txt 設定有時候會封鎖 /wp-content/ 目錄,導致 Google 看到的是沒有樣式的原始 HTML,無法理解頁面的真實內容。
# 錯誤!不要封鎖 CSS 和 JS
Disallow: /wp-content/themes/
Disallow: /wp-content/plugins/
產品或服務的核心頁面
如果你的電商網站的商品頁面或分類頁面被 robots.txt 封鎖,那些頁面就不會出現在 Google 搜尋結果。這是電商 SEO 最嚴重的技術問題之一。定期用 GSC 的「URL 檢查工具」抽查核心頁面,確認它們沒有被封鎖。
圖片和媒體檔案
如果你希望網站的圖片出現在 Google 圖片搜尋,就不要封鎖 /images/ 或 /uploads/ 目錄。媒體流量有時候對內容型或電商網站是重要的流量來源。
首頁和重要的落地頁
聽起來很基本,但確實有案例是工程師在測試環境加了 Disallow: / 然後忘記移除,正式上線後整個網站的自然流量歸零。
5. 用 GSC 測試
設定完 robots.txt 之後,你應該用 Google Search Console 的工具來驗證設定是否正確。
使用 GSC 的 robots.txt 測試工具
- 登入 Google Search Console
- 進入「設定」(齒輪圖示)→「robots.txt 測試工具」(舊版 GSC) 或:在 Google 搜尋「site:你的網站.com」後,Google 搜尋結果頁面有時會顯示 robots.txt 狀態
實際上,目前最方便的方式是直接使用 Google 的 robots.txt 測試器(需要 GSC 帳號)。
測試特定 URL
在 GSC 的「URL 檢查工具」中輸入某個頁面的 URL,報告會告訴你這個 URL 是否被 robots.txt 封鎖。這是最直接的測試方式。
如果報告顯示「Google 可以索引網址」並且沒有 robots.txt 限制的警告,代表設定正確。如果顯示「被 robots.txt 封鎖」,你需要去檢查哪條規則造成了封鎖。
第三方工具驗證
- Screaming Frog:爬取網站時會自動讀取 robots.txt,並標記哪些 URL 被封鎖
- robots.txt Validator(網路上有多個免費工具):輸入你的 robots.txt 內容,檢查語法是否正確
實際案例
台灣某健康食品電商在進行網站改版時,工程師把測試環境的 robots.txt(Disallow: /)直接部署到正式環境。兩週後 GSC 顯示索引頁面從 2,400 頁下降到 0,自然搜尋流量幾乎完全消失。修正 robots.txt 並重新提交後,花了約六週才讓 Google 重新索引所有頁面,期間損失了大量訂單。這個案例說明了部署前驗證 robots.txt 的重要性。
6. FAQ
Q1:robots.txt 封鎖的頁面還會出現在搜尋結果嗎?
有可能。如果有外部網站連結指向被 robots.txt 封鎖的 URL,Google 可能知道那個 URL 的存在,並在搜尋結果中顯示一個空的條目(沒有標題、沒有摘要)。如果你完全不想讓某個頁面出現在搜尋結果,正確做法是同時使用 robots.txt 封鎖爬取,加上直接在頁面加入 noindex meta tag(雖然理論上 robots 封鎖之後爬蟲讀不到 noindex,但最安全的做法是兩者都用,並透過 GSC 請求移除)。
Q2:robots.txt 可以用正規表達式嗎?
可以用有限的通配符(* 和 $),但不支援完整的正規表達式語法。Google 支援這兩個通配符,但其他搜尋引擎的支援程度可能不同。如果你需要更精細的爬取控制,可以搭配 URL 正規化(canonical tags)和 noindex meta tag 來處理。
Q3:robots.txt 設定改了,多久才會生效?
Google 爬蟲通常每隔幾天到幾週會重新爬取 robots.txt 檔案。如果你做了重要的設定變更,可以在 GSC 的 URL 檢查工具提交受影響的頁面,要求 Google 重新爬取。但注意:Google 不保證多快會處理你的重新爬取請求。緊急情況下(如意外封鎖了整個網站),要有耐心等待 Google 的下次爬取。
robots.txt 是技術 SEO 基礎設定的一部分,搭配 XML Sitemap 才能完整控制搜尋引擎的爬取行為。完整的技術 SEO 架構可以參考 台灣 SEO 實戰手冊,Sitemap 的設定步驟則在 XML Sitemap 設定教學 有詳細說明,更進階的技術 SEO 議題請參考 技術 SEO 完整指南。