更新: 2026-05-08 診斷路由器

robots.txt 設定完整指南:語法教學、常見錯誤與 GSC 診斷流程

robots.txt 是 Googlebot 造訪網站時讀取的第一份文件,控制哪些路徑可以爬取。本文涵蓋 robots.txt 語法結構、三大常見設定錯誤診斷、GSC 測試工具操作步驟,以及 robots.txt 與 meta robots noindex 的關鍵差異,幫助 SEO 和技術人員快速排查索引問題。

技術 SEO 2026-05-08 robots.txt技術SEO爬取管理GooglebotGSC網站健檢

robots.txt 是什麼:Googlebot 看的第一份文件

上週有個客戶說他的部落格文章全都消失在 Google 搜尋結果了。我一看 GSC,發現涵蓋範圍報告裡有幾百個頁面被標記為「被 robots.txt 封鎖」。打開他的 robots.txt 一看:

User-agent: *
Disallow: /

整站封鎖。這條設定等於跟所有爬蟲說:「這個網站什麼都不能爬。」

robots.txt 是放在網站根目錄的純文字檔案,URL 固定是 https://yourdomain.com/robots.txt。它是 Googlebot 造訪你的網站時讀取的第一份文件,用來判斷哪些路徑可以爬、哪些路徑要跳過。

重要觀念:robots.txt 只控制爬取,不控制索引。這個差別後面會詳細解釋,先記住這一點。

Googlebot 的行為是:先去抓 /robots.txt,讀取完之後才決定要不要繼續爬其他頁面。如果你的 robots.txt 不存在(回傳 404),Googlebot 預設可以爬整個網站。如果回傳 5xx 伺服器錯誤,Googlebot 會把整個網站當成暫時無法爬取,改天再試。

robots.txt 設定完整指南:語法教學、常見錯誤與 GSC 診斷流程

robots.txt 的語法結構

robots.txt 的語法不複雜,但細節很重要。格式錯一個字元,效果可能完全不同。這一節把四個核心指令和路徑匹配規則搞清楚,後面診斷才有基礎。

基本結構:

User-agent: Googlebot
Disallow: /private/
Allow: /private/public-page/

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

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

逐行說明:

  • User-agent:指定這條規則對哪個爬蟲生效。* 代表所有爬蟲。Googlebot 只對 Google 爬蟲生效。Google 也有子爬蟲,例如 Googlebot-Image、Googlebot-Video,可以分別設定。
  • Disallow:禁止爬取的路徑。空白值(Disallow:)代表允許爬取所有路徑。
  • Allow:在 Disallow 的範圍內,開放特定路徑。只有部分爬蟲(包括 Google)支援這個指令。
  • Sitemap:宣告你的 sitemap 位置。可以放多行、對應多個 sitemap 檔案。

路徑匹配規則需要特別注意:

  • Disallow: /blog 會封鎖 /blog、/blog/、/blog/2024/,因為是前綴匹配。
  • Disallow: /blog/ 只封鎖 /blog/ 開頭的路徑,不包含 /blog 這個頁面本身(少數情況下有差異,建議兩個都寫)。
  • Disallow: *.pdf$,Google 支援 *(任意字元)和 $(路徑結尾)兩個萬用字元。
robots.txt 語法結構:User-agent、Disallow、Allow、Sitemap 四個主要指令的說明圖

一個 robots.txt 可以包含多個 User-agent 群組。每個群組從 User-agent: 開始,到下一個 User-agent: 或檔案結尾結束。Google 爬蟲會找最符合自己名稱的群組,如果找不到,才退回用 * 群組。

Crawl-delay 指令:這個指令用來控制爬蟲兩次請求之間的等待時間(秒)。Bingbot 和其他部分爬蟲支援,但 Google 不支援 Crawl-delay。要控制 Googlebot 的爬取頻率,需要在 GSC 的「舊版 Search Console」→「爬取頻率」設定,或者等 Google 自己根據伺服器回應速度調整。

完整的語法規則與建立流程,可以參考 Google 官方 robots.txt 建立文件,裡面有最新的指令說明與範例。

常見 robots.txt 設定錯誤:症狀對照表

排查過的案例裡,robots.txt 問題大概可以分三類:誤封鎖重要路徑、無效指令造成混亂、以及格式問題。每一類的症狀和修法都不一樣。

類型一:誤封鎖重要路徑

症狀 常見原因 GSC 表現
整站消失於搜尋結果 Disallow: /(根目錄全封鎖) 大量「被 robots.txt 封鎖」
部落格所有文章消失 Disallow: /blog 或 /blog/ 特定路徑下的 URL 全被封鎖
圖片不出現在 Google 圖片搜尋 對 Googlebot-Image 的 Disallow 設定 圖片索引量掉零
新文章不被收錄 封鎖了 sitemap 路徑或 API 路徑 已提交 URL 仍顯示未收錄

類型二:無效指令造成混亂

  • 把 Disallow: /page 和 Disallow: /Page 當成同一條,但 robots.txt 路徑匹配是 大小寫敏感的
  • 寫了 Allow: /blog/ 卻沒有對應的 Disallow,Allow 獨立存在沒有意義,它只有在某個 Disallow 範圍內才生效
  • 誤用 Noindex: 指令,這個指令不是 robots.txt 標準語法,Google 已在 2019 年停止支援

類型三:格式問題

  • 指令後面多了空格(例如 Disallow: /admin/ ),部分解析器可能出問題
  • 使用 Windows 換行符(CRLF)而非 Unix 換行符(LF),某些舊版爬蟲會誤讀
  • 檔案編碼不是 UTF-8(含 BOM 的 UTF-8 也可能造成第一行解析失敗)

誤封鎖診斷流程:用 GSC 確認你沒有擋錯

如果懷疑 robots.txt 封鎖了不該封鎖的頁面,先在 GSC 做檢查,不要急著改檔案。很多人直接刪掉 Disallow 規則,結果改錯反而封鎖了更多東西。

GSC robots.txt 測試工具操作流程圖:從開啟 Search Console 到確認封鎖狀態的步驟說明

操作步驟:

  1. 打開 Google Search Console,選擇你的網站
  2. 左側選單 → 設定(Settings)→ 找到「robots.txt」區塊
  3. GSC 會顯示 Google 最近讀取的 robots.txt 版本,以及上次抓取時間
  4. 在測試框輸入你想確認的路徑,例如 /blog/my-article
  5. 點「測試」,系統會告訴你這條路徑對 Googlebot 是「允許」還是「封鎖」

要特別注意 GSC 顯示的 robots.txt 版本不一定是你現在的版本。Google 快取 robots.txt 最長 24 小時。如果你剛剛修改了 robots.txt,GSC 還在顯示舊版本,這是正常的。

如果在涵蓋範圍報告(Coverage Report)裡看到「被 robots.txt 封鎖」,點進去可以看到被封鎖的具體 URL。拿這些 URL 路徑一一貼入測試工具,確認封鎖是否符合你的預期。關於 GSC robots.txt 報告的完整說明,可以參考 Google Search Console 官方說明文件。

另一個快速方法:直接在瀏覽器打開 https://yourdomain.com/robots.txt,看原始內容,搭配閱讀比對被封鎖的路徑。

搭配GSC 索引涵蓋範圍報告的解讀方法,可以更快定位是 robots.txt 封鎖、軟性 404、還是 noindex 指令導致的收錄問題。

robots.txt 不等於 noindex:一個關鍵誤解

這是我見過最常見的誤解之一:以為 robots.txt Disallow 可以阻止頁面出現在搜尋結果。理解這個區別,才不會浪費時間做徒勞的設定。

這個假設是錯的。

robots.txt Disallow 只告訴 Googlebot 不要爬取這個路徑。但 Google 可能已經透過其他方式知道這個 URL 存在(例如:別的網站有連到這個頁面的連結),然後把這個 URL 索引進去,只是不知道頁面內容。

你可能在搜尋結果裡見過這種條目:顯示 URL,但描述欄只寫「由於該網站的 robots.txt,無法取得這個網頁的說明。」這就是典型案例:URL 被索引了,但 Google 因為 robots.txt 封鎖而無法讀取內容。

要完全防止一個 URL 出現在搜尋結果,你需要的是:

  • 讓 Googlebot 可以爬取這個頁面(不要 Disallow)
  • 在頁面的 <head> 加入 <meta name="robots" content="noindex">

Googlebot 必須先能爬到頁面,才能讀到 noindex 指令,然後才能把這個 URL 從索引中移除。如果你同時設了 Disallow 和 noindex,noindex 指令等於無效,Google 連進去讀都不進去,當然也讀不到 noindex。

延伸閱讀:noindex 和 nofollow 的完整說明:差異、設定方式與 SEO 驗證流程

robots.txt vs meta robots:什麼情況用哪個

這兩個工具解決不同問題,放在一起比較最容易搞清楚。選錯工具不只是沒效果,有時反而讓問題更難排查。下面的矩陣把六種常見情境整理清楚了。

robots.txt vs meta robots 六種情境對照表:控制爬取與索引的決策矩陣
你想要的結果 工具選擇 說明
Googlebot 可以爬、可以索引 什麼都不設定 預設行為
Googlebot 可以爬、但不想被索引 頁面加 meta robots: noindex Google 能看到頁面但不收錄
完全不想讓 Googlebot 爬取(省爬取預算) robots.txt Disallow 用於大量不重要的路徑,例如 /search?q= 參數頁
封鎖爬取 + 確保不被索引 Disallow + noindex(需等 Google 先讀到 noindex 再加 Disallow) 必須先讓 Google 爬到並讀到 noindex,才能加 Disallow
某個頁面不想讓 Google 追蹤連結 頁面加 meta robots: nofollow robots.txt 無法控制連結跟蹤行為
只封鎖特定爬蟲(例如 Bingbot) robots.txt User-agent: Bingbot meta robots 無法按爬蟲區分

常見誤用案例:把 Disallow: / 當成保護私密內容的方法。這不管用,因為 robots.txt 是公開的,任何人都可以直接訪問 /robots.txt 看到你封鎖了哪些路徑。要保護私密內容,需要的是登入驗證或 HTTP 認證。

更完整的爬取管理策略,可以參考網站爬取 SEO 的整體框架,裡面有 Googlebot 爬取行為的完整解說。

WordPress robots.txt 的特殊機制與坑

WordPress 沒有實體的 robots.txt 檔案,除非你自己建立一個。預設情況下,WordPress 動態生成一個虛擬 robots.txt,回應給爬蟲,內容大概是:

User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php

這個預設設定封鎖了後台路徑,允許 admin-ajax.php(因為某些主題的前台功能用到這個路徑)。

問題來了:

問題一:SEO 插件覆蓋虛擬 robots.txt

Yoast SEO 和 RankMath 都可以接管 robots.txt 的輸出。如果你在插件設定裡加了自訂規則,但實際效果跟預期不符,先確認是哪個插件在輸出 robots.txt,以及當前輸出的內容是什麼。最快的方法:直接在瀏覽器打開 /robots.txt 看原始輸出。

問題二:實體檔案優先於虛擬 robots.txt

如果你在 FTP 或主機後台的網站根目錄(public_html/)放了一個 robots.txt 實體檔案,這個實體檔案會覆蓋 WordPress 動態生成的虛擬版本。很多人忘記這件事,結果兩個來源打架,最後不知道哪個生效。

診斷方式:SSH 進主機,ls public_html/ | grep robots,看看有沒有實體檔案。

問題三:暫存外掛快取舊版 robots.txt

部分快取插件會把 robots.txt 也快取起來。修改之後測試沒變化,記得清快取。

進階設定:Sitemap 宣告、Crawl-delay 與爬取效率

robots.txt 除了封鎖路徑,還有兩個實用的進階功能:Sitemap 宣告讓搜尋引擎更快找到你的內容,Crawl-delay 控制非 Google 爬蟲的請求頻率。

Sitemap 宣告

在 robots.txt 最末加上 Sitemap 位置,不只是禮貌,而是有實際效果。Google、Bing 等搜尋引擎在抓 robots.txt 的時候,會同步把 Sitemap URL 加進爬取佇列。這比只在 GSC 提交 Sitemap 多一個通知管道。

Sitemap: https://yourdomain.com/sitemap.xml
Sitemap: https://yourdomain.com/news-sitemap.xml

如果有多個 Sitemap 索引檔案,每個都列出來。

Crawl-delay(非 Google 爬蟲)

如果你的伺服器資源有限,擔心 Bingbot 或其他爬蟲爬太快造成負載,可以設定 Crawl-delay:

User-agent: Bingbot
Crawl-delay: 10

代表請求之間等待 10 秒。但記住,Google 完全無視這個指令。要讓 Googlebot 慢一點,只能透過 GSC 設定(舊版 Search Console 的「爬取頻率」功能)。

爬取預算考量

對大多數中小型網站,爬取預算不是問題,Googlebot 有足夠能力爬完整站。但如果你有以下情況,才需要認真考慮用 robots.txt 管理爬取預算:

  • 網站有大量 URL 參數頁(例如電商篩選:/products?color=red&size=M)
  • 大量內部搜尋結果頁(/search?q=)
  • 測試環境或暫存路徑被意外連結到
  • 大型網站(數十萬頁以上)

這些情況下,用 robots.txt 封鎖低價值的動態 URL,可以讓 Googlebot 把爬取能量集中在真正重要的內容頁上。

想深入了解爬取預算的完整概念與 GSC 診斷方法,可以參考爬取預算(Crawl Budget)診斷與優化指南。

測試 robots.txt 的三種工具

修改 robots.txt 之前和之後都應該測試,不要憑感覺猜效果。以下三種工具各有不同視角,組合使用能覆蓋大部分的問題。

工具一:GSC robots.txt 測試工具

前面步驟提過了。這是最直接的方法,因為它模擬的是 Googlebot 的視角。在 GSC → 設定 → robots.txt,輸入路徑測試。

工具二:curl 直接查看

最快速的方法,直接用終端機:

curl https://yourdomain.com/robots.txt

可以確認檔案是否存在、內容是否正確、HTTP 回應碼是否是 200。如果回傳 301 redirect,要追一下 redirect 的目標,有些 CDN 設定會導致 robots.txt 被重導。

工具三:Google 搜尋 site: 指令

輸入 site:yourdomain.com/blog/,看看這個路徑下的頁面有沒有出現在搜尋結果。如果數量明顯偏少,搭配 GSC 報告確認是不是 robots.txt 的問題。

這三個工具搭配Google Search Console 完整教學中的系統化診斷方法,基本上可以排查大部分的 robots.txt 相關問題。

robots.txt 驗收清單:修完之後怎麼確認沒問題

改完 robots.txt,不要就這樣關掉瀏覽器先去做別的事。以下清單是我每次修完 robots.txt 都會跑一遍的確認步驟,5 分鐘內可以完成。

  • 直接打開 /robots.txt,確認內容是你要的版本(不是快取的舊版)
  • 在 GSC 測試工具確認你的重要頁面路徑是「允許」狀態
  • 確認 Disallow: / 不存在(除非你真的想封鎖整站)
  • 確認 Sitemap 行已正確宣告(路徑是完整 URL,非相對路徑)
  • 如果是 WordPress,確認是插件在控制還是實體檔案,兩個不要同時存在
  • 用 curl 確認 HTTP 回應碼是 200(不是 301/404/500)
  • 等 24-48 小時後,回到 GSC 查看 robots.txt 版本是否已更新
  • 等 Google 重新爬取後,查涵蓋範圍報告,確認「被 robots.txt 封鎖」的 URL 數量是否如預期減少或增加

常見誤解補充

最後整理幾個客戶常問的問題:

robots.txt 加密或保護私密內容?不行。robots.txt 是公開檔案,任何人都能看到你封鎖了哪些路徑,反而可能暴露你想隱藏的路徑名稱。私密內容要靠登入驗證。

robots.txt 可以封鎖 AI 爬蟲?可以設定,但效果有限。如果 AI 爬蟲遵守 robots.txt(遵守程度因平台而異),你可以針對特定 User-agent 設定 Disallow。例如 User-agent: GPTBot(OpenAI 爬蟲)或 User-agent: Claude-Web。但這不是保障,只是表達意願。

每次更新 robots.txt Google 要多久才會讀到?最長 24 小時。通常更快。急迫情況下,可以在 GSC 提交 URL 重新審查,間接觸發 Googlebot 重新訪問你的網站。

如果你的網站有爬取或索引問題,robots.txt 診斷是第一步。排查完之後,下一個要看的通常是GSC 索引涵蓋範圍報告,它會告訴你更完整的收錄狀態。

如果網站使用 JavaScript 框架,robots.txt 是否封鎖了 JS 或 CSS 資源,會直接影響 Googlebot 的渲染能力。詳見:JavaScript SEO 診斷:robots.txt 封鎖渲染資源的影響。

KW
Kevin Wu
技術 SEO 顧問 · Nitikarn Clinic
← 返回診斷列表