GEO / AI SEO 轉型前,先檢查網站可見度 預約診斷
GEO 與 AI 搜尋優化

robots.txt 怎麼寫?初學者也能懂的 SEO 設定與 AI 爬蟲開放指南

robots.txt 就像你家網站門口的那位警衛。它只管一件事:這個訪客能不能進來,把你家的內容搬走。它不管你家東西好不好、會不會排第一名,也不管 AI 會不會提到你。很多人把警衛當成萬用遙控器,結果不小心把自己的流量也擋在門外。這篇會用最白話的方式,教你怎麼跟這位警衛講清楚規矩。

robots.txt SEO 與 AI 爬蟲設定指南精選圖片,呈現網站通行規則、搜尋爬蟲、AI 爬蟲與驗證流程

robots.txt 就像你家網站門口的那位警衛。它只管一件事:這個訪客能不能進來,把你家的內容搬走。它不管你家東西好不好、會不會排第一名,也不管 AI 會不會提到你。很多人把警衛當成萬用遙控器,結果不小心把自己的流量也擋在門外。這篇會用最白話的方式,教你怎麼跟這位警衛講清楚規矩。

先把一個最大的誤會說清楚。robots.txt 解的是「要不要被爬」這個問題,不是「會不會排名」。你跟警衛說「這一頁不准看」,Google 的機器人就不會進來抓那一頁。但這不代表那一頁一定不會出現在搜尋結果裡,背後原因後面會解釋。

如果你還不太熟悉 SEO 到底在做什麼,可以先看站上什麼是 SEO 的入門介紹,再回來讀這篇會更順。robots.txt 屬於技術 SEO的一環,是幫 Google 和各種 AI 認識你網站的地基設定。地基顧好了,後面的內容和連結才接得上。

文章目錄

重點先看:四件你一定要先知道的事

  • robots.txt 管的是「能不能爬」,不是「能不能被收進搜尋結果」。被你擋掉的網址,還是可能出現在 Google 裡,只是沒有內容摘要。
  • Google 完全不理會 Crawl-delay 這個指令。寫了等於沒寫。要讓 Googlebot 放慢,要走 Search Console 的設定。
  • AI 爬蟲的名字會變,而且同一家公司會用好幾個名字。OpenAI 有 GPTBot 和 OAI-SearchBot,Google 用 Google-Extended 這個名字控制 AI 訓練。
  • 把 AI 爬蟲全部擋掉,等於放棄被 ChatGPT、Perplexity 這類工具引用的機會。要不要開,要看你的內容類型和目標,不是看別人怎麼做。

robots.txt 是什麼?用「門口警衛」來想就懂了

robots.txt 是一份放在網站根目錄的純文字檔。它的位置是固定的,永遠在你的網址後面加上 /robots.txt,例如 https://你的網址/robots.txt。這份檔案會對「願意守規矩的訪客」發出指令:哪些路可以走、哪些路不要走。

Google、Bing,還有大多數主流 AI 公司的機器人,都會先讀這份檔案再決定怎麼動。但要提醒你:它不是防火牆。不守規矩的訪客根本不會理它。所以把它想成「門口貼的公告」會比「鐵捲門」更準確。

robots.txt 像網站門口警衛的概念圖,允許守規矩的搜尋與 AI 爬蟲通行或轉向,但不是防火牆
robots.txt 是給守規矩爬蟲看的通行公告:能引導抓取範圍,卻不能取代登入、權限控管或防火牆。

在繼續講怎麼寫之前,有幾件 robots.txt「做不到」的事,你得先知道。這些是大家最常搞混的地方。

它不是排名開關。你跟警衛說「這頁不准看」,Google 的機器人就真的不進去了。但如果別的網頁有連結指到這一頁,Google 還是會記下這個地址。只是它沒進去看過,寫不出內容,就像通訊錄裡有名字、卻沒有電話號碼。它也不是版權宣告。擋掉 GPTBot,不等於 OpenAI 法律上不能用你的內容,只是它們自律不來抓。它更不是收錄保證。就算你全部開放,Google 也不一定會收錄每一頁,要不要收是 Google 自己根據內容價值判斷的。

說到底,robots.txt 真正有用的地方只有兩件。第一,幫機器人省時間,別把力氣花在不重要的頁面上,這對頁面很多的大站特別重要。第二,告訴 AI 公司「我的內容可不可以拿去練 AI」。把它當成這兩個用途的工具,就不會期待錯方向。

robots.txt 怎麼寫?五個基本指令看這裡

robots.txt 的結構很簡單,就是「一段段對特定訪客說的規則,加上一些全域規則」。每一段規則開頭寫你要對誰說話,後面跟著允許或禁止的路徑,一行一條,順序有差。下面把五個最常用的指令拆開來講。

robots.txt 五個基本指令圖,整理 User-agent、Disallow、Allow、Sitemap 與註解的功能
先指定對象,再設定禁止或允許的路徑;Sitemap 提供完整地圖,# 則只用來寫註解。

User-agent:警衛在叫誰的名字

User-agent 後面填的是訪客的名字。寫 * 代表「所有沒有特別點名的訪客」,而特別點名的名字會優先於 *。例如:

User-agent: *
Disallow: /private/

User-agent: Googlebot
Disallow: /tmp/

這段話的意思是:所有人都不能進 /private/,但只有 Googlebot 不能進 /tmp/。你就是在用名字,把規則精準地指派給不同訪客。

這裡有個小細節。Google 比對訪客名字時,大小寫都可以,寫 Googlebotgooglebot 都會被接受。但路徑比對是分大小寫的/Private//private/ 是兩條不同的路,千萬別搞混。

Disallow 和 Allow:哪條路能走、哪條不能

Disallow 是「禁止走這條路」,Allow 是「在禁止的範圍裡,額外開放某一條小路」。兩個都是「只要網址開頭符合這串字,就算命中」。例如:

User-agent: *
Disallow: /admin/
Allow: /admin/public/

這組規則禁止走 /admin/ 整個資料夾,但放行 /admin/public/ 這條小路。當禁止和允許同時命中時,Google 的算法是「比較長的那條路贏」。所以 /admin/public//admin/ 長,它會勝出,這條小路就會被放行。

如果你只想擋一個檔案、不想擋整個資料夾,就把路徑寫到檔名那麼精確:

Disallow: /downloads/draft.pdf

這裡要特別小心一個陷阱。Disallow: 後面什麼都不寫,意思是「什麼都不擋」。這跟 Disallow: /,也就是「擋全部」,剛好完全相反。一個斜線寫錯,效果天差地別。

Sitemap:給送貨司機一張地圖

Sitemap: 是一個全域指令,不屬於任何一個訪客群組。你把它放在檔案任何位置都可以,而且可以重複寫很多次:

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

Sitemap 就是你要交給訪客的那張「我有哪些頁面」的地圖。它的網址必須從頭完整寫出來(也就是含 https:// 的絕對網址),不能只寫後面一半的路徑。如果你的 Sitemap 跟 robots.txt 不在同一個網域,你得先透過 Search Console 驗證兩個網域,Google 才會接受這張地圖。

檔案要放哪、伺服器怎麼回應才算數

robots.txt 一定要放在網站的根目錄,網址固定是 https://你的網址/robots.txt。伺服器回應必須是 200 OK,而且內容類型要是 text/plain 純文字。放在子資料夾或子網域都不算數。要特別注意的是,每一個子網域都是獨立的門,要各自放一份,這件事後面講子網域時還會再提。

伺服器回應的代碼也有規矩。如果回 5xx(伺服器錯誤),Google 會把整個站暫時當成「全部禁止抓取」。但如果回 4xx,例如 404 找不到,Google 反而會當成「沒有規則,全部允許」。這就是為什麼 robots.txt 突然消失時,你的站可能被爬得更凶,而不是更安靜。

星號 * 和錢號 $ 是什麼意思?

robots.txt 支援兩個特殊符號。* 代表「隨便什麼字都算,可以是零個字也可以是一長串」。$ 代表「網址到這裡為止,後面不能再有任何東西」。這兩個符號用得好是神隊友,用錯了會變成大災難。

User-agent: *
Disallow: /*?sessionid=

這條規則會擋掉所有網址裡帶有 ?sessionid= 的頁面,避免這種每個人造訪都長不一樣的網址,被當成一堆重複內容。如果你對重複內容的處理有興趣,站上重複內容的成因與處理有更完整的說明。

Disallow: /*.pdf$

這條規則擋掉所有以 .pdf 結尾的網址。那個 $ 很重要。如果少了它,只寫 *.pdf,就連 /files/pdf-backup.html 這種網址也會被命中,因為 * 會把後面整串都吃進去。一個小錢號,差很多。

robots.txt 萬用字元比對圖,說明星號可匹配任意字串、錢號代表網址結尾
* 會延伸匹配任意字串,$則鎖定網址結尾;範圍差一個符號,可能從精準封鎖變成誤傷整站。

萬用字元寫錯是最常見的悲劇之一。寫 Disallow: /*Disallow: /,在大多數情況下效果一樣,都是擋全部。但寫 Disallow: /search*,會把 /search/search-results/search?q=hello 全部擋掉,範圍可能比你想要的大得多。寫完一定要用 Search Console 的網址檢查工具實際測一次,不要憑感覺。

換句話說,寫 robots.txt 其實是一場「精準度」的遊戲。你以為只擋一個頁面,常常不小心擋掉一整個分類。你以為擋一整個分類,有時候反而放行了一條更深的小路。這也是為什麼驗證這個動作不能省。

Crawl-delay 為什麼 Google 直接無視?

Crawl-delay: 是早年 Yahoo 發明的指令,用來告訴訪客「每次抓取之間,請間隔幾秒鐘」。聽起來很合理,但這裡有個殘酷的事實:Google 官方明確表示不支援 Crawl-delay,Googlebot 完全不會理會這個值。你在 robots.txt 寫 Crawl-delay: 10,對 Googlebot 來說就像沒寫一樣。

Bing 和 Yandex 過去支援這個指令,但每家對數字的解讀不同,不能當成所有搜尋引擎通用的控制鈕。把 Crawl-delay 當成控制 Googlebot 速度的工具,是很多 SEO 教學文章會犯的錯,別跟著抄。

如果你真的覺得 Googlebot 把伺服器壓得喘不過氣,正確的做法是打開 Search Console,看「檢索統計資料」報表,再到設定裡調整檢索頻率。Google 給的選項是「整體放慢」,不是精準的「每秒幾次」,但這才是它認得的控制方式。如果你真的很在意某個特定爬蟲把站搞垮,直接封鎖那個訪客的名字,比寫 Crawl-delay 有效多了。Cloudflare 這類服務也提供依訪客名稱或速度來限流的功能,那是比 robots.txt 更硬、更可靠的另一層控制。

「Disallow 了就不會出現在 Google」是最貴的誤會

這個誤會會直接吃掉你的流量,所以一定要講清楚。很多人心裡想的是「我不希望這一頁被收進搜尋結果」,於是寫了 Disallow: /some-page/,以為這樣 Google 裡就不會出現那一頁。但實際發生的事,跟你想的完全不一樣。

你一擋,Googlebot 就不進來抓那一頁了。問題是,它也就看不到那一頁裡的 noindex 標籤、看不到內容。可是只要有外部連結或內部連結指過去,Google 還是可能把這個網址收進搜尋資料庫,變成一種「只有網址、沒有標題、沒有摘要」的條目。你擋掉了 Google 看到內容的機會,卻沒擋掉 Google 把這個網址放進資料庫的機會。

想讓某一頁真的不出現在搜尋結果,要用的不是「不准進來」(Disallow),而是「進來看,但不要記下來」(noindex)。做法是在網頁裡加一行小標記,告訴機器人「這頁看看就好,不用收進名單」。對 PDF、影片這類不是網頁的檔案,則改在伺服器回應裡加 X-Robots-Tag: noindex

重點來了:你得不擋機器人進來,它才看得到這行標記。所以正確的做法常常是「允許抓取,加上 noindex 標籤」,而不是「禁止抓取,然後期待它別收錄」。

這也是為什麼 Search Console 偶爾會跳出「已建立索引,但無法建立內容索引」這類警訊。你以為自己擋掉了,Google 卻還是把它收進資料庫,只是沒有內容。遇到這種狀況,可以參考站上對「已建立索引但無內容」報表的偵錯流程,一步步找出原因。

怎麼檢查 robots.txt 有沒有寫對?

以前 Google 在 Search Console 提供過一個獨立的「robots.txt 測試工具」,可以一行一行輸入網址、看哪一條規則命中。這個工具已經在 2023 年底下架了,現在沒有官方的一對一替代品。不過別擔心,實際的檢查流程還是很清楚,分成三步。

Google Search Console 網址檢查官方畫面,顯示網址是否能建立索引以及檢索與索引狀態
Google Search Console 的網址檢查工具可確認頁面是否允許檢索,以及 Google 看到的索引狀態。來源:Google Search Console Help(官方畫面)。

第一步,確認檔案本身是對的。用瀏覽器打開你的 /robots.txt,看回應是不是 200、內容類型是不是純文字、內容是不是你剛改好的那份。接著到 Search Console 的「檢索 → robots.txt」報表,確認 Google 最近一次抓到的版本和時間。Google 抓到的不一定是你剛改的,要等它重新來抓。

第二步,用「網址檢查」工具測單一網址。輸入你想確認的網址,Google 會告訴你它「是否允許檢索」。如果有被封鎖,還會顯示是哪一條規則命中、來自哪個訪客群組。這是最接近舊測試工具的功能,只是改成一次驗一個網址。機械式地驗一個網址,比你腦袋裡猜一百次規則還有用。

第三步,看「檢索統計資料」裡的回應分佈。如果你看到大量「因為 robots.txt 封鎖而沒抓」的數字,代表你的封鎖規則比你想的寬,要回頭檢查萬用字元。這份報表也會列出被擋最多的網址類型,是抓問題最快的線索。對 robots.txt 的任何疑問,一律以 Google 官方文件為準,不要看部落格的二手轉述。站上整理的Google 搜尋運作方式說明是很好的起點,從那裡理解 Googlebot 怎麼讀、怎麼比對、怎麼決定收不收錄,比記任何 SEO 結論都可靠。

AI 爬蟲有哪些?GPTBot、ClaudeBot、Google-Extended 全表

這一塊是變化最快的。AI 爬蟲的名字會新增、會改名、會越分越細,一家公司常常把「訓練用的」和「搜尋用的」拆成不同名字。下面這張表整理的是撰文時的常見名單,你要定期回各家官方文件核對,別把任何清單當成永遠不變的答案。

AI 爬蟲角色圖,將網站存取分成搜尋檢索、模型訓練與使用者即時請求三種用途
同一家 AI 公司可能使用不同 user-agent 分別處理搜尋、模型訓練與使用者即時請求,robots.txt 應按用途設定。
訪客名稱所屬公司主要用途
GPTBotOpenAI抓內容去訓練生成式 AI 模型
OAI-SearchBotOpenAIChatGPT 搜尋功能的即時檢索
ClaudeBotAnthropic抓內容去訓練 Claude 模型
anthropic-aiAnthropic舊名稱,現行檢索改由其他名字負責
PerplexityBotPerplexityPerplexity 搜尋的檢索
Google-ExtendedGoogle控制 Googlebot 抓到的內容能不能拿去訓練 Gemini
Applebot-ExtendedAppleApple AI 訓練用途
CCBotCommon Crawl公開網頁資料集,常被拿去訓練模型
BytespiderByteDance字節跳動相關產品
Meta-ExternalAgentMetaMeta AI 代理
AmazonbotAmazonAmazon AI 與檢索

名單看了之後,有幾個最容易踩到的陷阱,一個一個講。

第一個,Google-Extended 不是一個獨立的爬蟲。它是一個「產品標記」,是搭配 Googlebot 一起運作的。意思是,Googlebot 照樣會來抓你的網頁,Google-Extended 只是控制「抓到的內容能不能拿去訓練 Gemini 這類 AI 產品」。擋掉 Google-Extended 不會影響你在 Google 搜尋的排名,但會影響 Google 的 AI 產品用不用你的內容。很多人以為擋 Google-Extended 就是擋 Google,其實是兩回事。

第二個,OpenAI 把「訓練」和「搜尋」拆開了。GPTBot 專門抓訓練資料,OAI-SearchBot 專門做 ChatGPT 搜尋的即時檢索,ChatGPT-User 則處理使用者當下瀏覽的頁面。如果你想要「可以被 ChatGPT 引用,但不要被拿去訓練」,那就允許 OAI-SearchBot、禁止 GPTBot。OpenAI 的官方文件有提供這類組合,但選項會變動,請直接到它們的平台文件查最新組合,別套用部落格過時的範例。

第三個,AI 爬蟲的名字會演化。Anthropic 早年用 Claude-Web,後來主要用 ClaudeBot;OpenAI 把 OAI-SearchBot 和 GPTBot 分開,也是後來的事。每隔幾個月檢查一次各家官方文件,比仰賴任何「完整清單」都可靠。

第四個,封鎖不等於法律保護。robots.txt 比較像門口貼的「請勿打擾」紙條,守規矩的人會看,不守規矩的人根本不理。它不是法律,你沒辦法拿它去告人。如果真的很怕內容被別人拿去用,那要另外找法律的方法,紙條擋不住不守規矩的訪客。把這張表當成需要定期更新的設定檔,而不是背起來就一勞永逸的知識。

要不要開放 AI 爬蟲?一個簡單的判斷方法

這幾年大家把「被 AI 回答引擎引用」這件事獨立出來談,於是有了 AEO 和 GEO 這些詞。要先講清楚:robots.txt 本身不會讓你被 AI 引用,它只是「把門打開」的第一步。門開了之後會不會被引用、會被怎麼引用,要看你內容的相關性、結構化程度、來源權威性,這些都不是 robots.txt 能管的。如果你想先弄懂這些概念,站上有AEO 答案引擎最佳化GEO 生成式搜尋最佳化,以及AI SEO 的完整長文可以參考。

把門關上,就連被考慮的機會都沒有。從這個角度看,封鎖主流 AI 爬蟲,等於自動放棄在 ChatGPT、Perplexity、Gemini 的回答裡被引用的管道。對品牌站、媒體站、知識型網站來說,這通常不是你要的結果。失去的不只是流量,還有品牌在被 AI 引用過程中累積的曝光和信任。

但對某些站來說,封鎖是合理的。如果你的內容是付費訂閱、機密資料、內部研究,或者你在商業策略上就是不想讓競品或模型免費使用,那關門是對的。這是商業判斷,不是技術判斷。

我的看法是,對多數靠內容賺自然搜尋流量的站來說,預設開放主流 AI 爬蟲是更合理的起點。先開放、再觀測、再決定,比一開始就全面封鎖更可逆,也更有資料基礎。什麼都沒觀測過就全面封鎖,常常只是把不確定變成確定的損失。

robots.txt、noindex、X-Robots-Tag 到底差在哪?

這三個東西很多人會搞混,其實它們是在不同階段做事的。搞懂它們的差別,你才不會拿錯工具。

robots.txt、noindex 與 X-Robots-Tag 比較圖,分別對應抓取、HTML 收錄與非 HTML 檔案收錄控制
robots.txt 管抓取;noindex 管 HTML 頁面收錄;X-Robots-Tag 從 HTTP 回應控制 PDF 等非 HTML 檔案。

robots.txt 在「抓取」階段做事。它決定訪客能不能進來拿這個網址。一旦你封鎖了,訪客就不會進來抓,所以也就看不到網頁裡的任何標籤。noindex 在「收錄」階段做事。訪客抓得到內容,看到 noindex 之後就不把它收進搜尋資料庫,這才是「不要出現在搜尋結果」的正確工具。X-Robots-Tag 做的事跟 noindex 一樣,只是它用在伺服器回應層,特別適合 PDF、試算表這類不是網頁的檔案。

實務上要搭配著用。用 robots.txt 管大範圍「不想被抓」的區域,例如搜尋結果頁、篩選頁、暫存目錄。用 noindex 處理單一頁面「不要收錄」的需求。用 X-Robots-Tag 處理非網頁檔案的收錄控制。這幾個訊號要跟你的網站架構最佳化策略一起看,否則很容易出現「robots.txt 封了、但內部連結還是指過去」這種自相矛盾。架構和封鎖不一致,是技術 SEO 最常見的自殘組合。

九個最常見的 robots.txt 錯誤

把這幾年高頻出現的錯誤整理出來,每一條都附上判斷方法。如果你對技術性的踩雷全貌有興趣,站上整理的常被忽略的技術 SEO 錯誤有更多案例可以對照。

robots.txt 常見錯誤檢查表,涵蓋誤擋 CSS 與 JS、把 Disallow 當 noindex、萬用字元過寬、Sitemap 錯誤等問題
最危險的錯誤不是少寫一條規則,而是把可渲染資源、重要頁面或整段路徑一起誤擋。
  • 封鎖了 CSS 和 JS。這是最嚴重也最容易被忽略的一種。Disallow: /*.css$ 或封鎖 /wp-includes//assets/ 這類路徑,會讓 Googlebot 抓不到樣式和腳本。於是 Google 在把網頁「畫出來看」(渲染)的時候,看不到使用者實際看到的版面,直接影響行動裝置相容性、內容判讀,甚至排名。
  • 把 Disallow 當 noindex 用。前面講過了,這會造成「只有網址、沒有內容」的收錄。
  • 萬用字元寫得太寬。Disallow: /a* 擋掉所有 a 開頭的路徑;Disallow: /*? 擋掉所有帶查詢參數的頁面,包含你賴以為生的篩選頁和追蹤參數頁。
  • 把 robots.txt 當排名開關。以為擋掉某頁,其他頁排名就會上升;或以為全部開放,排名就會自動變好。robots.txt 不參與排名計算,它只影響抓取和間接的收錄範圍。
  • Sitemap 寫錯位置或格式。用相對路徑、用 http:// 在 https 站台上、指向不存在的網址、跨網域沒驗證,這些都會讓 Sitemap 形同失效。
  • 大小寫混亂。在 Linux 主機上,/About//about/ 是兩個不同的路徑,robots.txt 比對路徑時也分大小寫。很多人沒注意到自己的系統產生了大小寫不一致的網址,結果封鎖規則漏掉了一邊。
  • 改了卻沒驗證。改完沒去 Search Console 看 Google 抓到的版本,結果改錯了好幾天還不知道。改動後二十四小時內驗一次是基本功。
  • 把註解當成指令。# Disallow: /secret/ 是註解,不會生效。真正生效的是沒有 # 的那幾行。註解只能拿來寫給人看的說明,不能拿來「關閉但保留」規則,因為訪客根本看不到註解裡的內容。
  • Disallow: /wp- 想一次搞定。看起來很聰明,其實會把 /wp-content//wp-includes/ 全擋掉,連 CSS、JS、圖片都進不來,前台在 Google 眼裡變成沒有樣式的一堆字。

三份可以直接抄的 robots.txt 範本

不同的站有不同的需求,這裡給你三個極端版本,你可以照自己的情況調整。三份都假設你已經有一份 sitemap.xml

robots.txt 三種設定策略比較,涵蓋全部開放、選擇性開放與高度封閉
內容與品牌站多半從開放開始;SaaS 可選擇性限制;付費或機敏內容則需要更嚴格的存取控制。

範本一:全部開放(內容站、品牌站、做 AEO 的站)

User-agent: *
Allow: /

User-agent: GPTBot
Allow: /

User-agent: OAI-SearchBot
Allow: /

User-agent: ClaudeBot
Allow: /

User-agent: anthropic-ai
Allow: /

User-agent: PerplexityBot
Allow: /

User-agent: Google-Extended
Allow: /

User-agent: Applebot-Extended
Allow: /

Sitemap: https://你的網址/sitemap.xml

這份背後的判斷是:對多數內容站來說,被 AI 引用的潛在價值,大於被「白嫖訓練」的風險。開放主流 AI 爬蟲,搭配結構化內容和清楚的命名,是長期 AEO 的基礎。如果你決定走開放路線,可以再認識一下llms.txt 這個補充提案。它把站上適合對外整理的內容列成一份清單。但要說清楚:llms.txt 不會控制、也不能保證 AI 來抓取或引用你的內容,它只是一份額外的參考文件,性質上偏建議、不是強制標準。

範本二:半開半關(商用 SaaS、付費內容前段)

User-agent: *
Allow: /

# 封鎖搜尋結果頁、篩選頁與會員區
User-agent: *
Disallow: /search/
Disallow: /*?filter=
Disallow: /checkout/
Disallow: /account/

# 對 AI 搜尋類保留引用機會
User-agent: GPTBot
Allow: /

User-agent: OAI-SearchBot
Allow: /

User-agent: ClaudeBot
Allow: /

User-agent: PerplexityBot
Allow: /

# 對純訓練用途的標記封鎖
User-agent: Google-Extended
Disallow: /

User-agent: Applebot-Extended
Disallow: /

User-agent: CCBot
Disallow: /

Sitemap: https://你的網址/sitemap.xml

這份的判斷是:保留被 AI 搜尋產品引用的機會,但封鎖「純訓練」類的訪客。封鎖 Google-Extended 和 CCBot,對「拿去訓練 Gemini」「倒進公開資料集」這類用途的覆蓋率最高。記住,這只是自律層,不是法律層。

範本三:幾乎全關(內容資產、付費牆後、機敏站)

User-agent: *
Disallow: /

# 只放行 Google 與 Bing 的主搜尋爬蟲
User-agent: Googlebot
Allow: /

User-agent: Bingbot
Allow: /

# 封鎖所有已知 AI 爬蟲
User-agent: GPTBot
Disallow: /

User-agent: OAI-SearchBot
Disallow: /

User-agent: ClaudeBot
Disallow: /

User-agent: anthropic-ai
Disallow: /

User-agent: PerplexityBot
Disallow: /

User-agent: Google-Extended
Disallow: /

User-agent: Applebot-Extended
Disallow: /

User-agent: CCBot
Disallow: /

User-agent: Bytespider
Disallow: /

Sitemap: https://你的網址/sitemap.xml

注意這份的順序問題。User-agent: * 加上 Disallow: / 會擋掉全部,所以必須在後面用 User-agent: GooglebotAllow: /,把主搜尋爬蟲放行回來。順序錯了,Google 會直接離開你的站。改完務必用網址檢查工具驗證幾個關鍵頁面。

一份 AI 開放決策框架

把要不要開放 AI 爬蟲這件事,拆成三個方向來想:內容類型、商業模式、品牌策略。

AI 爬蟲開放決策框架,從內容類型、商業模式、品牌策略與伺服器負載決定開放、限制或封鎖
先看內容是否公開,再評估變現模式、品牌曝光需求與伺服器負載,最後決定開放、限制或封鎖。

內容類型。公開資訊、教育內容、品牌內容,預設開放,被引用的價值高。付費內容、會員專屬,封鎖或加 noindex。機敏資料、個資、內部文件,一律封鎖,而且要驗證封鎖真的生效。

商業模式。靠廣告或訂閱變現的站,預設開放,AEO 是一條新的成長曲線。B2B 或利基市場,看內容敏感度,多數可以開放主搜尋、對 AI 訓練保守。內容資產或 IP 營運,預設封閉,只例外放行。

品牌策略。想成為 AI 引用來源、建立權威,預設開放。想保護原創、避免被模型稀釋,封鎖訓練類、保留搜尋類。純工具站、不在意品牌曝光,就看技術負載決定。

還有一條獨立要看的是伺服器負載。如果有機器人來得太頻繁,把你的網站弄慢了,你可以在網站前面裝一個「流量管制員」(技術上叫速率限流),規定同一個機器人每分鐘只能進來幾次。這層管制不必動到 robots.txt,而且比它更硬。或者暫時封鎖那個訪客的名字,等網站規模變大、設備升級了再開放。robots.txt 是粗工具,速率限流是細工具,兩個層次搭配用最有效率。

WordPress 的 robots.txt 要怎麼設?逐行拆給你看

前面給的範本是「整份抄了就能用」,這一段換個角度,把一份會實際用在 WordPress 內容站的 robots.txt,一條一條拆給你看。重點不在背起來,而在於搞懂每一行解決什麼問題、拿掉會怎樣、寫錯最常出現在哪裡。如果你用的是 WordPress,站上的WordPress SEO 最佳化整理會跟這段互相呼應。

WordPress robots.txt 安全設定圖,封鎖後台、登入與搜尋頁,同時放行 admin-ajax、CSS、JS 並加入 Sitemap
WordPress 設定重點是封鎖後台與低價值路徑,同時保留 admin-ajax、CSS、JS 與 Sitemap,避免影響前台功能和渲染。

WordPress 還有一個容易讓人搞混的點。就算你沒有自己放這份檔案,WordPress 也會偷偷幫你準備一份預設的,內容包含 Disallow: /wp-admin/Disallow: /wp-login.php 這類基本規則,並自動附上 Sitemap 連結。如果你後來自己上傳了一份真正的 robots.txt,你那份就會取代它。但 SEO 外掛如 Rank Math 或 Yoast 也會偷偷改這份預設檔。所以當網站行為怪怪的,第一步是先弄清楚:現在生效的到底是你寫的、還是 WordPress 自動產生的那份?

User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
Disallow: /wp-login.php
Disallow: /readme.html
Disallow: /*?s=
Disallow: /search/
Disallow: /*/feed/$
Disallow: /author/
Disallow: /?attachment_id=
Allow: /*.css$
Allow: /*.js$

第一段封的是後台和系統頁。Disallow: /wp-admin/ 把整個後台擋掉,但保留 admin-ajax.php,因為很多前台功能,像是表單送出、無限捲動、即時篩選,都走這個端點,連帶封掉等於打壞前台互動。/wp-login.php/readme.html 是 WordPress 預設會外露的系統頁,沒有 SEO 價值,也沒必要浪費爬蟲預算。

第二段封的是低價值的自動產出網址。/*?s= 命中所有內建搜尋結果頁,這是 WordPress 內容站最常被 Googlebot 濫抓的一類:使用者隨便打個關鍵字就生出一頁,內容只是文章片段拼湊,品質很差。/search/ 是美化過的搜尋網址,道理一樣。/*/feed/$ 擋掉分類和標籤的 RSS feed,這些是給讀者訂閱用的,不是給搜尋引擎收錄的。寫這幾條的目的是告訴 Googlebot,不要把心力花在這些衍生網址上。

第三段處理兩種 WordPress 特有的低價值頁。作者彙整頁 /author/ 要不要擋,看你的編輯策略,單人作者站通常擋掉無妨,多人協作站則可以保留當作品集。附件頁 /?attachment_id= 幾乎一律擋,每張上傳的圖都會自動生一個獨立網址,對內容站沒有 SEO 價值,純粹稀釋。這兩條要不要寫,取決於你的站會不會真的被這些網址拖累,不是看別人的範本就照抄。

分類和標籤彙整頁要不要封,是 WordPress 內容站另一個常見爭論。我的判斷是:分類頁如果有原創導言、有人工挑選、本身有搜尋價值,就保留給 Google 收錄,甚至值得用內部連結加重它的分量;只是自動彙整、內容單薄、跟單篇文章重複度高的標籤頁,用 noindex 處理就好,不必動 robots.txt。拿 Disallow 對付彙整頁是過頭的動作,你會連 Google 看到連結、理解網站主題架構的機會一起擋掉。robots.txt 是粗工具,noindex 才是針對單頁的細工具,別拿大錘敲小釘。

第四段是「明確放行 CSS 與 JS」。多數情況不寫就是放行,但寫出來是給自己一個底線:這些檔案絕對不能擋。Google 渲染網頁需要 CSS 和 JS,才看得到使用者實際看到的版面,少了它們會回到沒有樣式的 HTML,這對行動裝置相容性和內容判讀都是地雷。

這份樣板最常見的寫錯有兩種。最危險的是前面提過的 Disallow: /wp-,會把 CSS、JS、圖片全擋掉。另一種是 Sitemap 寫成相對路徑 Sitemap: /sitemap.xml,Google 不接受,必須是完整 https:// 開頭的絕對網址。寫完之後,拿 Search Console 的網址檢查抽幾個關鍵頁面驗證:一篇最新文章、一個分類頁、首頁,確認「允許檢索」的答案跟你想的一樣,再往下做。

還有一個 WordPress 特有的陷阱要點出。SEO 外掛上的「不要收錄這頁」勾選,跟 robots.txt 的 Disallow 是兩件事,但很多人以為是同一件事。外掛的勾選,是在網頁裡加一張「這頁不用收錄」的紙條;robots.txt 的 Disallow,是叫機器人「這頁不准進來看」。

麻煩出在兩個一起用的時候。如果你又設了「不准進來看」,機器人被擋在門外,根本沒機會看到「不用收錄」那張紙條,結果又變成前面講的「有地址、沒內容」。所以在 WordPress 處理單一網址的「不要收錄」,優先用外掛的 noindex;要「不要被抓」才用 robots.txt。這兩個開關看起來像在做同一件事,作用層次其實不同。

爬蟲預算是什麼?小站其實不用太在意

robots.txt 常跟「爬蟲預算」綁在一起講,好像每個站都得會管這件事。但 Google 在官方文件裡講得很直白:爬蟲預算不是多數網站需要擔心的問題,它主要影響的是大型網站,規模在數十萬到數千萬網址那個等級。幾萬頁以下的站,Googlebot 基本抓得完,不必為了「省預算」去寫一堆 Disallow。如果你想深入這個主題,站上有完整的爬蟲預算解析

爬蟲預算可以想成兩件事相乘的結果。一是 Google 每次來能抓多快,這取決於你的網站回得多快、穩不穩。二是 Google 有多想抓你的站,這取決於你的網站紅不紅、有沒有人連結過來、常不常更新。這兩件事乘起來,就是 Googlebot 每天大概願意來幾次。robots.txt 在這裡的角色,是把 Googlebot 有限的心力,引導到「值得收錄的頁面」,避免它在沒價值的網址上空轉。

對大型電商、分類廣告、論壇這類站,robots.txt 是把搜尋結果頁、篩選頁、查詢參數的組合收掉的主要工具。一個購物站可能有幾十萬個篩選組合,每個組合都是一個獨立網址,Googlebot 抓這些等於在重複內容上耗費心力。這時 Disallow: /*?filter=Disallow: /*?sort= 這類規則才有實質意義,因為你確實在把爬蟲預算從低價值網址搶回來,交給重要頁面。

但對內容站、品牌站、部落格來說,寫十幾條 Disallow 去「保護爬蟲預算」,效果常常是零。你的站沒那麼大,Googlebot 沒有被你拯救,你反而增加自己寫錯的風險。我看過太多小站站長,花一個下午精修 robots.txt,結果首頁因為一條萬用字元誤擋而不自覺,幾週後流量掉了才回來找原因。

要知道自己到底有沒有爬蟲預算問題,看 Search Console 的「檢索統計資料」報表就知道了。每天的抓取量、回應速度、主機回應狀態都記錄在裡面。如果你的站每天被 Googlebot 抓的網址數,跟網站總頁數很接近,那基本沒問題;如果被抓的明顯少於總頁數,而且很多重要頁面沒被觸及,這時才回頭看 robots.txt 和內部連結架構。沒有量測就談爬蟲預算,等於在黑暗裡調時鐘。

講得更精確一點,爬蟲預算的主要導流工具其實是內部連結架構,不是 robots.txt。Googlebot 跟著連結走,連結得到的頁面才會被發現和排序。robots.txt 只能告訴它「哪些不要去」,不能告訴它「先去哪一個」。把重要頁面放在首頁幾次點擊內、給它們更多內部連結、移除沒有任何連結指過去的孤兒頁,這些動作對爬蟲預算的影響,遠大於再修一條 Disallow。顧好網站架構,比顧好 robots.txt 更能讓 Googlebot 抓得有效率。

換句話說,小站的 robots.txt 應該短到不能再短。開放為主、封幾個系統路徑、加 Sitemap,收工。把心力放在內容和內部連結,回報比磨 robots.txt 高得多。把 robots.txt 當萬靈丹,是大站的毛病搬到小站,得不償失。

改完 robots.txt 之後,要做這幾件事

很多人以為改完檔案就結束了。但 robots.txt 改完那一刻,才是工作的開始。Google 不會馬上知道你改了,要等它下次來抓。

robots.txt 修改後四步驗證流程,依序確認 HTTP 回應、Search Console 版本、關鍵網址與後續抓取狀態
修改後先確認檔案與 HTTP 回應,再看 Search Console 抓到的版本、測關鍵網址,最後持續觀察抓取與索引變化。

Google 對 robots.txt 重新抓取頻率的官方說法是,通常二十四小時內會更新它記得的版本。實務上快的話幾小時,慢的話半天到一天。你沒辦法手動強制 Google 立刻重抓,但可以加速它發現改動的過程。

第一步,確認檔案本身是對的。用瀏覽器或 curl 打開你的 /robots.txt,看回應是 200、內容類型是純文字、內容就是你剛改的那份。CDN 或快取層常常害你看到舊版,這時手動清除一次,或加一個像 ?cb=123456 這樣的快取破壞參數,確認原始伺服器的內容。

第二步,到 Search Console 的「檢索 → robots.txt」報表,看 Google 最後抓到的版本和時間。這個報表是判斷「Google 已經知道你的改動了嗎」最直接的訊號。如果顯示的還是舊版,等幾小時再看,不必急著做任何動作。

第三步,用「網址檢查」測你改動影響到的關鍵頁面。例如你新增了 Disallow: /search/,就拿一個內部搜尋網址進去驗證,看 Search Console 回報的「是否允許檢索」有沒有從「是」變成「否」。如果答案跟你預期相反,那是你的規則寫錯了,不是 Google 反應慢。

第四步是節奏的預期。改完 robots.txt 不會立刻看到排名或收錄變化,因為它本來就不直接影響排名。它的影響是「允許或不允許 Google 抓」,後面才接「Google 抓了之後要不要收錄、怎麼排名」,每一層都有自己的時間表。解除封鎖後要看到頁面重新進收錄,通常需要幾天到幾週;封鎖後要看到頁面離開,可能更久。

如果你也經營 Bing 流量,Bing Webmaster Tools 至今還保留獨立的 robots.txt 檢查工具,可以逐條輸入網址驗證命中規則,比 Google 的單網址驗證更適合批次測試。Bing 和 Google 對 robots.txt 的語法解讀大致一致,但有少數邊緣案例,例如 Crawl-delay,行為不同,別假設兩家完全等價。

最後提醒一個常見陷阱:不要因為「等不到效果」就反覆改動。robots.txt 的生效週期是以天為單位,不是以分鐘為單位。頻繁改動只會讓你不知道哪一版才是 Google 實際讀到的,反而更難除錯。改一次、驗一次、等一天,這個節奏比直覺慢,但比直覺準。把這個節奏記下來,搭配前面三份範本和決策框架,你就能穩穩地管好這位門口警衛,而不是被它牽著走。

常見問題

我封鎖了 GPTBot,為什麼還是看到 ChatGPT 引用我的內容?

有幾個可能。第一,引用來自別人對你內容的轉述或快取,不是 GPTBot 直接抓的。第二,OpenAI 透過第三方資料集,例如 Common Crawl,取得你比較早期的內容,那不是 GPTBot 抓的,robots.txt 管不到。第三,ChatGPT 的瀏覽功能會透過 Bing 或即時檢索,那會走另一個訪客名稱,跟你封鎖的 GPTBot 不是同一個。robots.txt 只控制 OpenAI 自家爬蟲自律與否,不能控制「別人抓了你的內容再餵給模型」這條路徑。

可以用 robots.txt 控制 AI 回答裡怎麼描述我嗎?

不行。robots.txt 是開關,不是內容指令。AI 怎麼描述你,取決於它在訓練和檢索時看到的內容,也就是你的網站內容、外部權威來源、結構化資料、實體命名。想影響 AI 對你的描述,要從內容和實體層面下手,這是 AEO 的工作,不是 robots.txt 的層級。

擋掉 Google-Extended 會影響我在 Google 搜尋的排名嗎?

不會。Google-Extended 是產品標記,不影響 Googlebot 的抓取和排名。它只控制「Googlebot 已經抓到的內容,能不能用於 Gemini 這類 AI 產品訓練」。Google 在官方文件裡對此有明確說明,不要把它跟 Googlebot 混為一談。

robots.txt 上限大小是多少?太大會怎樣?

Google 對 robots.txt 檔案大小的處理有上限,官方文件提到的量級在數百 KB 左右,超出會被截斷。被截斷的部分 Google 不會讀,等於你寫在檔案末尾的規則可能根本沒生效。如果你的站需要寫到接近上限,多半是規則設計有問題,應該用萬用字元或目錄層級來概括,而不是一頁一頁列。

子網域要各自放 robots.txt 嗎?

要。每一個子網域都是獨立的門,所以 blog.example.comshop.example.com 要各自有 robots.txt,各自控制。跨子網域的爬蟲政策不會自動繼承,很多人以為主網域設好就全部覆蓋,結果子網域整個門戶洞開。子網域和子目錄在 SEO 上的差別,站上子網域與子目錄的比較有完整說明。

我把某頁 Disallow 了,但 Search Console 顯示「已建立索引」,怎麼辦?

這就是前面講的「只有網址、沒有內容」收錄現象。Google 沒抓到內容,因為你封鎖了,但有其他來源連到這個網址,所以它還是被放進搜尋資料庫,只是沒有內容。要真正移除,改用 noindex 並允許抓取,讓 Googlebot 能讀到標籤;或在 Search Console 使用移除工具做暫時移除,等 Google 重新評估要不要從資料庫裡拿掉。

留下你的問題或補充

你的電子郵件不會被公開。