後台的流量報表某天多出一長串陌生名字:GPTBot、ClaudeBot、PerplexityBot,一個接著一個反覆造訪同樣幾個頁面,次數甚至超過真人訪客。乍看像被鎖定攻擊,查過才知道這些其實是各家 AI 公司派出的爬蟲,不是惡意行為。只是接下來要不要擋、擋哪一支、規則又該寫在哪裡,才是真正讓人卡住的地方。
要回答這些問題,得先回到 WordPress robots.txt 編輯這件事本身。robots.txt 是一份放在網站根目錄、告訴搜尋引擎與各種爬蟲「這裡可以逛、那裡請繞道」的純文字規則檔,原本只用來管 Googlebot、Bingbot 這類搜尋引擎爬蟲,但這兩年多出一整批 AI 爬蟲,原本的規則早就不夠用。有些爬蟲負責把內容吃進模型訓練,有些負責即時抓頁面回答讀者提問,擋錯一種,可能白白讓網站被排除在 AI 的答案來源之外;放錯一種,又可能讓內容整篇被拿去訓練模型而不自知。
接下來就從 WordPress 的 robots.txt 其實放在哪裡、要怎麼動手改開始拆,一路拆到各家 AI 爬蟲怎麼分類、規則怎麼寫最準,才不會擋錯或漏擋。先從一個常被忽略的基本觀念講起,那就是 WordPress 的 robots.txt 很可能不是一個「真的存在」的檔案。
WordPress 的 robots.txt,實際上放在哪裡?
多數人在自己的主機空間裡翻遍檔案總管,就是找不到一個叫 robots.txt 的檔案,那不是漏找,是這個檔案本來就不一定實際存在。WordPress 核心用一個叫 do_robots() 的函式,在有人造訪「網域/robots.txt」這個網址時即時產生內容,而不是把內容真的寫成一個檔案放在硬碟上。這種「虛擬」robots.txt 平常看不見,也改不到,因為它根本不是一份實體檔案,而是每次被請求時才由程式現算現吐;預設內容通常就是擋掉 /wp-admin/ 後台目錄、再放行其中的 admin-ajax.php 這類基本規則。
不過只要網站的根目錄(跟 wp-config.php 同一層)真的放了一個實體的 robots.txt 檔案,WordPress 就會整套讓路,改成直接把那個實體檔案的內容吐給爬蟲看,虛擬版從此不再生效。這也是為什麼有些網站的 robots.txt 內容看起來很陽春,只有幾行 WordPress 內建的規則;有些卻能自訂一大串。差別就在有沒有實體檔案。
要確認自己網站現在生效的是哪一種、內容又是什麼,最直接的方法是打開瀏覽器,在網址列輸入「你的網域/robots.txt」直接查看。這一步應該在動手修改前先做一次,才知道現在的起點長什麼樣子,也才不會改了半天,卻搞不清楚自己動的是實體檔案,還是根本沒被讀取的虛擬版。

編輯 robots.txt 的兩條路:外掛內建編輯器,或手動上傳檔案
WordPress 編輯 robots.txt 大致有兩條路可以走,選哪一條要看網站現有的設定,不是憑喜好挑。已經裝了 SEO 外掛(像 Yoast SEO 或 Rank Math)的網站,幾乎不用碰 FTP,直接在外掛的後台介面就能改;沒有裝 SEO 外掛,或主機環境本身限制外掛寫入檔案的網站,才需要自己動手建立一個實體檔案再上傳。
判斷自己該走哪一條,其實只要問兩個問題:網站有沒有裝 SEO 外掛?如果有,外掛能不能正常寫入檔案(有些共用主機的權限設定會擋掉外掛的寫入動作)?兩題都是肯定答案,用外掛內建的編輯器最快;只要有一題答不出來,就得靠手動上傳這條路。

用 SEO 外掛的內建編輯器
以兩套常見的 SEO 外掛為例。Yoast SEO 的路徑是後台選單裡的「SEO」,點進去後找「工具」,再點「檔案編輯器」;Rank Math 則是從「Rank Math」選單進去,點「一般設定」,裡面有「Edit robots.txt」的選項。
如果網站目前還沒有實體的 robots.txt 檔案,第一次進到這個編輯畫面時,外掛通常會先跳出提示,詢問要不要建立一個新的 robots.txt 檔案。點下去確認之後,才會出現真正可以輸入文字的編輯框,接下來要新增或修改規則,都在這個文字框裡直接動手就好。
自己建立實體檔案上傳
沒有裝 SEO 外掛,或是想擺脫外掛依賴、直接自己掌控這個檔案的網站,可以走手動上傳這條路。做法是用純文字編輯器(不是 Word 這類會自動加上格式的軟體)建立一個新檔案,檔名務必全部小寫、存成 robots.txt,編碼選 UTF-8。
檔案寫好之後,透過 FTP 軟體或主機控制面板內建的檔案總管,把它上傳到網站的根目錄,跟 wp-config.php 放在同一層,不能放進子資料夾。上傳完成後,一樣回到瀏覽器,打開「網域/robots.txt」確認內容有正確顯示,這一步能立刻看出是不是傳錯路徑或內容有誤。
robots.txt 的 User-agent、Disallow、Allow,實際上要怎麼寫?
robots.txt 的語法其實只有幾個關鍵字,搞懂它們的角色,後面看到再複雜的規則也拆得開。User-agent 指定這一組規則要套用在哪一支爬蟲身上,寫 * 代表適用所有沒有被特別點名的爬蟲;Disallow 指定某個路徑不開放這支爬蟲讀取,Allow 則是反過來,在一個大範圍被擋掉的情況下,單獨開放某條路徑當例外。萬用字元 * 可以代表任意一段字元,結尾符號 $ 則代表路徑必須剛好在這裡結束,不能再往後接其他字元。多數規則檔的最後,還會加一行 Sitemap,直接告訴爬蟲網站地圖放在哪裡,省去它自己去找的時間。

路徑比對是區分大小寫的,/Admin/ 跟 /admin/ 對爬蟲來說是兩個完全不同的路徑;規則的比對順序是由上到下,愈精確、愈晚出現的規則,通常會蓋掉前面比較籠統的規則。
用一段 WordPress 常見的規則來看實際寫法:
User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
Disallow: /?s=
Sitemap: https://example.com/sitemap_index.xmlCode language: plaintext (plaintext)
第一行的 User-agent: * 代表底下的規則套用在所有爬蟲身上。第二行擋掉整個 /wp-admin/ 後台目錄,避免後台頁面被爬進搜尋結果;但後台目錄底下的 admin-ajax.php 常被前台一些互動功能呼叫,所以第三行單獨用 Allow 把它從封鎖範圍裡撈出來當例外。第四行擋掉網址帶有 ?s= 的搜尋結果頁,這類頁面內容重複,對 SEO 沒有幫助,不需要被索引。最後一行的 Sitemap 不是拿來擋或放行任何東西,單純告訴爬蟲網站地圖檔案的位置。
天天造訪網站的 AI 爬蟲,其實分成三種用途
這幾年在流量報表或伺服器紀錄裡看到的 AI 爬蟲,雖然名字一堆,實際上可以歸成三種用途,分清楚這三種,才知道擋哪一種會影響什麼。
第一種是訓練用,任務是把網站上的公開內容吃進去,拿來訓練或微調 AI 模型,常見的有 OpenAI 的 GPTBot、Anthropic 的 ClaudeBot,還有 Google 的 Google-Extended。第二種是即時查詢引用用,運作方式跟第一種完全不一樣。讀者在 ChatGPT、Claude 或 Perplexity 這類工具裡問問題時,系統會即時抓取相關頁面,拿內容組織答案,並在回答裡附上原始網址當引用來源;常見的有 OpenAI 的 OAI-SearchBot、Anthropic 的 Claude-SearchBot,以及 PerplexityBot。第三種是使用者觸發瀏覽,只有在使用者主動請 AI 開啟某個具體網址時才會出動,像 OpenAI 的 ChatGPT-User 與 Anthropic 的 Claude-User 都屬於這一種,平常不會主動大範圍爬網站。

這個分類會直接影響一個常見誤解:很多人以為擋掉 GPTBot 之後,自己的網站就再也不會被 ChatGPT 提到,其實不是這麼回事。擋訓練用的爬蟲,擋掉的只是「內容被拿去訓練下一代模型」這件事,不等於網站從此在 AI 的回答裡消失;真正會讓網站從 AI 回答裡消失的,是擋掉第二種即時查詢引用用的爬蟲,因為那才是負責即時抓頁面、產出答案與引用連結的角色。GPTBot 跟 ChatGPT-User 的差別也是同一套邏輯:前者長期、大範圍收集內容去訓練模型,後者只在使用者當下明確要求時才抓取那一個網址,兩者各自有獨立的 robots.txt 規則,擋一個不代表另一個也被擋住。
至於「擋 AI 爬蟲會不會連 Google 排名都一起被拖下水」,答案是不會,至少 Google-Extended 這一支不會。Google 官方文件明講,Google-Extended 只用來控制內容要不要被拿去訓練 Gemini 這類模型,跟一個網站有沒有出現在 Google 搜尋結果裡、排名高不高,是完全分開的兩套機制,擋掉它不會影響搜尋能見度。
逐行示範:針對 AI 爬蟲寫允許或封鎖規則
分清楚三種用途之後,接下來就是把規則寫進 robots.txt。這裡示範兩種常見策略,選哪一種要看網站希望被 AI 怎麼對待。
策略一:只擋訓練用,放行查詢引用用,適合希望繼續被 AI 工具引用、帶來曝光,但不想讓內容整篇被拿去訓練模型的網站。
User-agent: GPTBot
Disallow: /
User-agent: ClaudeBot
Disallow: /
User-agent: Google-Extended
Disallow: /
User-agent: OAI-SearchBot
Allow: /
User-agent: Claude-SearchBot
Allow: /
User-agent: PerplexityBot
Allow: /Code language: plaintext (plaintext)
前三段分別對 GPTBot、ClaudeBot、Google-Extended 下 Disallow: /,也就是完全擋掉這三支訓練用爬蟲,不讓它們讀取網站的任何內容。後三段則對 OAI-SearchBot、Claude-SearchBot、PerplexityBot 下 Allow: /,明確放行這三支負責即時查詢引用的爬蟲,讓網站的內容還能被引用在 AI 的回答裡。
策略二:全部擋掉,適合內容較敏感、不希望被任何一種 AI 碰觸的網站,寫法簡單很多:
User-agent: GPTBot
Disallow: /
User-agent: ClaudeBot
Disallow: /
User-agent: Google-Extended
Disallow: /
User-agent: OAI-SearchBot
Disallow: /
User-agent: Claude-SearchBot
Disallow: /
User-agent: PerplexityBot
Disallow: /
User-agent: ChatGPT-User
Disallow: /
User-agent: Claude-User
Disallow: /Code language: plaintext (plaintext)

不管選哪一種策略,這段規則都寫進前面學到的位置:有裝 SEO 外掛就貼進外掛的編輯框,沒裝就寫進手動上傳的實體檔案裡。有一個排序上的細節容易被忽略:如果網站原本已經有一段 User-agent: * 的萬用字元規則(例如前面示範過的擋 /wp-admin/ 那段),針對特定爬蟲的規則要各自獨立成一組,放在檔案裡自己的區塊,不要跟萬用字元那組混在一起寫。多數爬蟲在比對規則時,只認專門指名給它的那一組,不會去理會 User-agent: * 底下的內容;把兩者分開寫清楚,才不會讓通用規則跟特定爬蟲的規則彼此蓋掉。
robots.txt 是君子協定,不是防火牆
規則寫對了、也放對位置了,不代表爬蟲一定會乖乖照做,這裡有兩個常被忽略、卻會讓「明明改了規則卻沒生效」的環節。
第一個環節是 robots.txt 本質上是一份自願遵守的協議,不是強制攔截的防火牆。多數正規的搜尋引擎與 AI 公司的爬蟲會遵守這份規則,前面提到的幾支爬蟲官方都表明會讀取並尊重 robots.txt,但規格本身沒有強制力,少數不遵守規範的爬蟲,並不會因為 robots.txt 寫了 Disallow 就真的被擋在門外。
第二個環節在於網站的架設方式。如果網站掛在 Cloudflare 這類 CDN 或 WAF(網頁應用程式防火牆)後面,WAF 本身通常另外有一套針對爬蟲的流量管理設定,而且這套設定的判斷時機,可能比 robots.txt 更早介入,直接在流量抵達網站之前就先攔下或放行。兩邊的設定如果沒有對齊,就會出現「robots.txt 明明改了,爬蟲的行為卻完全沒變」的情況,原因往往不是規則寫錯,而是 WAF 那一層已經先做了決定。

這一點在 2026 年 7 月變得更需要留意。Cloudflare 官方部落格公告,將 AI 流量拆成三種用途分開管理:搜尋(預先收集、建立索引內容,供之後回答問題使用)、代理(使用者請 AI 即時去抓某個頁面的行為)、訓練(把內容收集起來訓練或微調模型)。公告也提到,2026 年 9 月中會套用新的預設值,對於刊登廣告的頁面,訓練與代理這兩類流量預設會被擋掉,搜尋類則維持預設放行;既有的、還沒動過設定的免費方案網站,屆時也會一併套用新預設值。原本用 Cloudflare 那種一鍵封鎖所有 AI 的設定的網站,得重新確認自己現在的分類設定,有沒有跟著這次調整跑掉,才不會出現「以為擋住了,其實規則已經被新預設值蓋過去」的落差。
規則寫完,怎麼確認語法沒寫錯?
規則寫完,還有最後一關要做,那就是確認語法真的沒寫錯,爬蟲讀到的也是最新版本。這裡分兩層驗證,愈基本的愈先做。
第一層最簡單,就是前面提過的動作,直接在瀏覽器打開「網域/robots.txt」,確認畫面上顯示的內容跟自己剛剛寫的一致,不是一片空白,也沒有跳出 404 找不到頁面的錯誤。這一步能立刻抓出上傳路徑錯誤、檔名打錯這類低級失誤。
第二層要透過 Google Search Console 的 robots.txt 報表,確認 Google 讀到的版本是不是最新的,報表裡也會列出有沒有語法錯誤或警告訊息。如果想確認「某一條特定網址有沒有被規則擋住」,不是靠猜,而是改用 Search Console 裡的網址檢查工具,直接針對那一條網址單獨測試,結果會明確告訴使用者這個網址目前是被允許還是被封鎖。
這裡要提醒一個容易踩的坑,那就是過去 Google 曾經有一支獨立的「robots.txt 測試工具」,可以直接貼網址進去測試,但這支工具已經被 Google 淘汰,功能整併進現在的 robots.txt 報表裡。如果照著舊教學,想找那支已經消失的獨立測試工具,只會在後台裡繞來繞去、白忙一場,不如直接用現在的報表與網址檢查工具。
AI 爬蟲的名單還在持續增加,今天寫進規則裡的幾支,未必是明年還在的全部;Cloudflare 這類服務的預設值也還在調整,今天生效的分類方式,不保證半年後還是同一套。robots.txt 從來不是設定一次就能放著不管的檔案,建議至少每一季重新打開一次「網域/robots.txt」,看看現在的規則跟現況對不對得上,新出現的爬蟲有沒有被涵蓋進去。花幾分鐘定期複查,比事後才發現規則早就跟不上局勢,划算得多。
