← 逆流而上
Wudelay

robots.txt 設定怎麼寫?教學與常見錯誤

Wudelay AI 2026-09-29約 11 分鐘的航程

robots.txt 設定怎麼寫?教學與常見錯誤

robots.txt 設定看起來只是幾行文字,卻是許多網站「重要頁面突然從 Google 搜尋結果消失」的常見兇手。一個位置打錯的 Disallow: /,或是不小心把整個部落格目錄擋住,就可能讓辛苦寫好的文章從索引裡蒸發,而且站方往往毫無警覺。

robots.txt 的作用其實很單純:告訴搜尋引擎爬蟲網站的哪些路徑可以爬、哪些不要爬,主要目的是管理伺服器的爬取流量,而不是把網頁排除在 Google 之外的工具。這個常見誤解,正是多數 robots.txt 設定出包的源頭。

以下從語法規則、優先權判斷、常見錯誤,到上線前的測試方式,一次整理清楚,並補上一個多數教學還沒提到的新課題:2026 年該怎麼在 robots.txt 裡處理 AI 爬蟲,例如 GPTBot、ClaudeBot。

robots.txt 是什麼?先搞懂它能做什麼、不能做什麼

robots.txt 是一個放在網站根目錄的純文字檔案,依循「Robots 排除標準」撰寫規則,提供給遵守規範的爬蟲讀取。它的核心用途是避免爬蟲對網站發出過多請求造成負擔,適合用來管理大型網站的爬取預算,或是擋掉不需要被爬取的功能性頁面,例如購物車、後台登入頁。

它做不到的事,是把頁面藏起來。Google 官方文件明確說明,被 robots.txt 擋住的頁面如果被其他網站連結,網址本身以及連結的錨文字仍可能出現在搜尋結果中,只是不會顯示內容摘要。換句話說,靠 Disallow 想讓頁面徹底消失,常常事與願違——爬蟲不會進去讀內容,但頁面存在的事實還是可能被 Google 發現並列出。

真正要讓頁面不出現在搜尋結果,官方建議的作法是用 noindex meta 標籤或密碼保護,而不是 robots.txt。想了解各種 HTML 標籤在 SEO 上分別負責什麼,可以參考為什麼 HTML 標籤是 SEO 最被忽略的基本功這篇。

方法 爬蟲會不會讀取頁面內容 頁面會不會出現在搜尋結果 適合用途
robots.txt Disallow 不會進入爬取 網址仍可能被索引,但沒有摘要 節省爬取預算、擋掉低價值路徑
meta robots noindex 會進入爬取,才能讀到指令 不會出現 確實要移除搜尋結果的頁面
密碼保護 無法存取內容 不會出現 私密或會員限定內容

如果懷疑自己的頁面是被 robots.txt 誤擋才沒被收錄,可以搭配網站沒被 Google 收錄?6 個檢查步驟逐項排查。

robots.txt 放在哪裡?上線前要符合的基本規則

在動手寫規則之前,先確認幾個容易踩雷的基本條件。

規則 說明
檔案位置 必須放在網站根目錄,例如 https://www.example.com/robots.txt;放在子目錄無效
檔名 必須完全是小寫的 robots.txt,不能有其他變化
編碼 必須是 UTF-8 純文字檔
適用範圍 只管理同一個協定、主機、埠號底下的路徑;http 和 https、www 和不帶 www 的版本要分開處理
檔案大小 Google 只讀取前 500 KiB,超過的內容會被忽略
數量 一個網域只能有一份 robots.txt

robots.txt 設定語法教學:五個核心欄位

寫 robots.txt 用到的欄位不多,Google 官方建立指南列出的核心欄位只有幾個,理解每一個欄位的行為,比背語法更重要。

User-agent:指定規則適用哪個爬蟲

每一組規則都要以 User-agent 開頭,指定這組規則適用的爬蟲。星號代表除了 Google 部分 AdsBot 系列之外的所有爬蟲;要針對特定爬蟲下規則,例如 Googlebot、Bingbot,就把名稱填進去。

User-agent: *

Disallow: /wp-admin/

Disallow 與 Allow:擋掉與放行

Disallow 用來標出不希望爬蟲進入的路徑,路徑必須以斜線開頭。Allow 則是在某個大範圍被擋住的情況下,把裡面的特定子路徑重新放行,常見用法是整個管理後台擋住,但放行其中一支要給前台呼叫的檔案:

User-agent: *

Disallow: /wp-admin/

Allow: /wp-admin/admin-ajax.php

這正是 WordPress 內建虛擬 robots.txt 的預設寫法,由核心函式 do_robots() 自動產生,即使沒有另外上傳檔案,網站也會輸出這組規則。

Sitemap:告訴爬蟲地圖在哪

Sitemap 欄位用來宣告網站地圖的完整網址,可以放在檔案中任何位置,一份 robots.txt 可以列出零個或多個 sitemap:

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

萬用字元 * 與 $:更精準地描述路徑

Google 支援兩種萬用字元:「*」代表任意 0 個以上的字元,「$」代表網址結尾。兩者搭配可以精準鎖定某一類檔案,不必逐一列出路徑:

User-agent: *

Disallow: /*.pdf$

這組規則會擋掉所有以 .pdf 結尾的網址,但不會影響網址中間剛好出現 .pdf 字串、後面還有其他參數的頁面。

優先權規則:Disallow 和 Allow 衝突時聽誰的

當 Allow 和 Disallow 同時符合同一個網址,Google 會採用路徑字元數最長、也就是最具體的規則;如果雙方長度相同,則採用限制較少的一條,也就是 Allow 優先。以下幾個細節也容易被忽略:

  • 路徑比對區分大小寫,/File.html 和 /file.html 是兩個不同的路徑
  • 爬蟲會挑最符合自己名稱的那一組 User-agent 規則使用,不會把多組不同對象的規則混在一起套用
  • 針對同一個 User-agent 如果分散寫了好幾組規則,Google 會先在內部合併成一組再判斷
  • 沒有被任何 Disallow 規則擋到的路徑,預設就可以被爬取,不需要特別寫 Allow 去聲明

常見錯誤:robots.txt 為什麼常常誤擋重要頁面

多數 robots.txt 造成的 SEO 災情,都不是語法錯誤,而是規則寫得比想像中管得更寬。以下是幾個最常見的狀況。

  • 用 Disallow: / 擋掉整站——這是最嚴重的錯誤,通常發生在把測試站的 robots.txt 忘記換成正式版,或是複製範本時沒改到路徑,結果讓整個網站對爬蟲關閉。
  • 擋掉 CSS、JS 等資源檔案——Googlebot 需要載入 CSS 和 JavaScript 才能像瀏覽器一樣畫出頁面,藉此判斷內容與版面。擋住這些資源會讓 Google 看到殘缺的頁面,可能影響排名判斷。
  • 把 robots.txt 當成 noindex 在用——曾經在 robots.txt 裡寫 noindex 指令確實對 Google 有效,但這從來不是正式支援的欄位。Google 已在 2019 年 9 月 1 日起停止支援這個寫法,現在寫了也不會有任何效果,要移除頁面必須改用 meta robots noindex、404 或 410 狀態碼,或是密碼保護。
  • 指望 crawl-delay 控制爬取速度——這是部分爬蟲支援的非官方欄位,Google 完全不讀取這個指令,寫了也不會減緩 Googlebot 的爬取頻率。
  • 誤解 WordPress「不公開索引」設定的效果——WordPress 5.3 之前,勾選阻止搜尋引擎索引本網站,會讓虛擬 robots.txt 直接輸出 Disallow: /,擋住整站爬取。5.3 版之後這個行為已經移除,改成透過 meta 標籤輸出 noindex,爬蟲仍會進站爬取,只是被要求不要索引。這代表現在光看 robots.txt 內容,已經看不出這個設定有沒有打開,必須另外檢查頁面的 meta 標籤。
  • 路徑或大小寫打錯——少打一個斜線、目錄名稱大小寫不一致,規則就悄悄失效或誤傷其他路徑,而且不會有任何錯誤訊息提示。
  • 沒確認 robots.txt 是否真的能被公開存取——如果網站前面掛了需要登入或 IP 白名單的防護機制,爬蟲讀 robots.txt 時可能拿到登入頁或錯誤頁,反而被當成規則內容誤判。

實際範例:一份能直接套用的 robots.txt

把前面的規則組合起來,一份基本、適合多數網站的 robots.txt 大致長這樣:

User-agent: *

Disallow: /wp-admin/

Allow: /wp-admin/admin-ajax.php

Disallow: /cart/

Disallow: /checkout/

Disallow: /*?s=

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

這份範本示範了三個常見情境:擋掉後台但放行前台需要呼叫的檔案、擋掉購物車與結帳頁(這類頁面不需要被搜尋引擎索引)、擋掉內部搜尋結果頁(常見的重複內容來源,以 ?s= 這類查詢參數辨識),最後宣告 sitemap 位置。實際使用前務必依照自己網站的目錄結構調整路徑,並照著後面的測試步驟確認沒有誤傷其他頁面。

2026 年新課題:AI 爬蟲(GPTBot、ClaudeBot)要不要擋?

除了傳統搜尋引擎,近年 OpenAI、Anthropic 等 AI 公司也各自派出爬蟲收集網路內容,而且同一家公司底下,不同爬蟲的用途並不相同,擋或不擋的後果也不一樣,不能一概而論。

以 OpenAI 為例,官方文件列出三支不同用途的爬蟲:GPTBot 用來蒐集資料訓練生成式 AI 模型,OAI-SearchBot 用於 ChatGPT 的搜尋功能、把網站內容帶進搜尋結果,ChatGPT-User 則是使用者在 ChatGPT 對話中臨時要求讀取某個網址時才會觸發。三者可以分開設定,例如擋掉訓練用的 GPTBot,同時放行負責搜尋曝光的 OAI-SearchBot。

Anthropic 的架構類似:ClaudeBot 負責蒐集訓練資料,Claude-SearchBot 用來優化 Claude 的搜尋結果品質,Claude-User 則對應使用者在 Claude 中主動要求讀取頁面的情境。Anthropic 官方說明三支爬蟲都遵守 robots.txt,可以個別用 User-agent 規則控制。

要不要擋,取決於取捨:擋掉訓練用爬蟲不會影響 Google 排名,因為 Googlebot 是完全獨立的爬蟲、有自己的一套規則;但如果連搜尋或檢索用的爬蟲也一併擋掉,等於放棄了在 ChatGPT、Claude 這類 AI 助理的回答中被引用的機會。這正是GEO,生成式引擎優化要處理的課題之一——內容能不能被 AI 搜尋引用,robots.txt 是最前面的一道關卡。範例寫法:

User-agent: GPTBot

Disallow: /

User-agent: OAI-SearchBot

Allow: /

User-agent: ClaudeBot

Disallow: /

User-agent: Claude-SearchBot

Allow: /

值得留意的是,這個時間表不是每支爬蟲都通用。OpenAI 官方文件提到,OAI-SearchBot 的搜尋結果調整約需 24 小時才會反映,但這句話只針對 OAI-SearchBot 的搜尋結果呈現;官方並未說明 GPTBot、ClaudeBot 這類訓練用爬蟲的封鎖規則要多久才會生效,調整後不宜假設訓練爬蟲也會在同樣的時間內跟著同步。

設定好之後怎麼測試?

robots.txt 屬於改錯不會跳警告、但後果很嚴重的檔案,上線前務必測試,不要憑感覺判斷。

  1. 先用無痕視窗打開檔案網址,例如 https://你的網域/robots.txt,確認任何人(包含爬蟲)都能公開讀到內容,而不是被導向登入頁或出現 404。
  2. 用 Search Console 的 robots.txt 報表檢查——這份報表會列出 Google 幫網站前 20 個主機找到的 robots.txt 檔案、上次檢查時間、檔案大小,以及剖析錯誤或警告的數量,點進去還能看到過去 30 天的版本歷史。如果站上還沒設定過 Search Console,可以先參考SEO 實戰篇【零】:先裝好你的「儀表板」。
  3. 用網址檢查工具驗證單一頁面——想確認某一支特定網址有沒有被擋到,把網址貼進 Search Console 的網址檢查工具,就能看到 Google 判定的爬取狀態。
  4. 修改後主動要求重新檢索——在 robots.txt 報表的檔案清單裡,可以針對更新過的檔案要求 Google 重新抓取,不用被動等待快取到期。

常見問題 FAQ

robots.txt 可以讓頁面徹底消失在 Google 搜尋結果嗎?

不行。robots.txt 只能阻止爬蟲進入頁面讀取內容,如果這個網址已經被其他地方連結,Google 仍可能把網址本身列進搜尋結果,只是沒有內容摘要。真的要移除頁面,要用 meta robots 的 noindex 標籤,或是搭配密碼保護。

robots.txt 和 meta robots noindex 差在哪?

差別在於爬蟲要不要進去看。robots.txt 是在爬蟲進門之前就把它擋在外面,所以爬蟲讀不到頁面裡 noindex 這類指令;meta robots noindex 則是允許爬蟲進來讀取頁面,讀到 noindex 之後才不把頁面收進索引。如果同時對一個頁面下 Disallow,又想靠 noindex 移除它,兩者會互相干擾——爬蟲根本進不去,自然也讀不到 noindex 標籤。

網站沒有 robots.txt 檔案,或檔案讀取失敗會怎樣?

依錯誤類型而定。Google 官方規格文件說明,如果伺服器回傳 404 等 4xx 錯誤(429 除外),Google 會視為網站沒有任何爬取限制,照常爬取全站;如果回傳 5xx 伺服器錯誤,Google 會先暫停爬取,30 天內沿用先前讀到的舊版規則,超過 30 天仍讀不到才會視為沒有限制。

robots.txt 改了之後多久生效?

Google 通常會把 robots.txt 的內容快取最長 24 小時,實際時間也會受網站回傳的 Cache-Control 標頭影響。改完規則想盡快生效,可以到 Search Console 的 robots.txt 報表要求重新檢索,不用整整等一天。

WordPress 需要自己上傳 robots.txt 嗎?

不一定。WordPress 內建會自動用虛擬檔案輸出一份基本的 robots.txt(擋 /wp-admin/、放行 admin-ajax.php),不用手動建立就會存在。如果需要加入 sitemap 宣告、擋掉購物車頁面等客製規則,才需要另外用外掛或手動上傳實體檔案覆蓋預設版本。

參考資料

  1. Robots.txt Introduction and Guide(Google Search Central)
  2. Create and Submit a robots.txt File(Google Search Central)
  3. How Google Interprets the robots.txt Specification(Google Search Central)
  4. robots.txt 報表(Search Console 說明)
  5. Google Cancels Support for Robots.txt Noindex(Search Engine Journal)
  6. The ultimate guide to robots.txt(Yoast)
  7. do_robots()(WordPress Developer Resources)
  8. Overview of OpenAI Crawlers(OpenAI Developers)
  9. Does Anthropic crawl data from the web, and how can site owners block the crawler?(Claude Help Center (Anthropic))

把這篇放進別人的河裡

ThreadsLINEX

river breath・河的呼吸

讀完不急著走。跟著河面呼吸三輪,把讀到的,沉下去。

吸 —— 讓念頭浮起

「唵」—— 圓滿俱足,我與河本為一體

Wudelay ・ 人生之河

同一條支流

GEO 是什麼?生成式引擎優化:讓文章被 AI 搜尋引用的方法

2026-09-10約 18 分鐘

內部連結怎麼佈局?文章少的新站這樣串內鏈不浪費權重

2026-09-07約 10 分鐘

結構化資料怎麼加?Schema 標記新手實作指南(2026 年版)

2026-09-06約 19 分鐘