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「做不到」的事,你得先知道。這些是大家最常搞混的地方。
它不是排名開關。你跟警衛說「這頁不准看」,Google 的機器人就真的不進去了。但如果別的網頁有連結指到這一頁,Google 還是會記下這個地址。只是它沒進去看過,寫不出內容,就像通訊錄裡有名字、卻沒有電話號碼。它也不是版權宣告。擋掉 GPTBot,不等於 OpenAI 法律上不能用你的內容,只是它們自律不來抓。它更不是收錄保證。就算你全部開放,Google 也不一定會收錄每一頁,要不要收是 Google 自己根據內容價值判斷的。
說到底,robots.txt 真正有用的地方只有兩件。第一,幫機器人省時間,別把力氣花在不重要的頁面上,這對頁面很多的大站特別重要。第二,告訴 AI 公司「我的內容可不可以拿去練 AI」。把它當成這兩個用途的工具,就不會期待錯方向。
robots.txt 怎麼寫?五個基本指令看這裡
robots.txt 的結構很簡單,就是「一段段對特定訪客說的規則,加上一些全域規則」。每一段規則開頭寫你要對誰說話,後面跟著允許或禁止的路徑,一行一條,順序有差。下面把五個最常用的指令拆開來講。

User-agent:警衛在叫誰的名字
User-agent 後面填的是訪客的名字。寫 * 代表「所有沒有特別點名的訪客」,而特別點名的名字會優先於 *。例如:
User-agent: *
Disallow: /private/
User-agent: Googlebot
Disallow: /tmp/
這段話的意思是:所有人都不能進 /private/,但只有 Googlebot 不能進 /tmp/。你就是在用名字,把規則精準地指派給不同訪客。
這裡有個小細節。Google 比對訪客名字時,大小寫都可以,寫 Googlebot 或 googlebot 都會被接受。但路徑比對是分大小寫的。/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 這種網址也會被命中,因為 * 會把後面整串都吃進去。一個小錢號,差很多。

萬用字元寫錯是最常見的悲劇之一。寫 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 年底下架了,現在沒有官方的一對一替代品。不過別擔心,實際的檢查流程還是很清楚,分成三步。

第一步,確認檔案本身是對的。用瀏覽器打開你的 /robots.txt,看回應是不是 200、內容類型是不是純文字、內容是不是你剛改好的那份。接著到 Search Console 的「檢索 → robots.txt」報表,確認 Google 最近一次抓到的版本和時間。Google 抓到的不一定是你剛改的,要等它重新來抓。
第二步,用「網址檢查」工具測單一網址。輸入你想確認的網址,Google 會告訴你它「是否允許檢索」。如果有被封鎖,還會顯示是哪一條規則命中、來自哪個訪客群組。這是最接近舊測試工具的功能,只是改成一次驗一個網址。機械式地驗一個網址,比你腦袋裡猜一百次規則還有用。
第三步,看「檢索統計資料」裡的回應分佈。如果你看到大量「因為 robots.txt 封鎖而沒抓」的數字,代表你的封鎖規則比你想的寬,要回頭檢查萬用字元。這份報表也會列出被擋最多的網址類型,是抓問題最快的線索。對 robots.txt 的任何疑問,一律以 Google 官方文件為準,不要看部落格的二手轉述。站上整理的Google 搜尋運作方式說明是很好的起點,從那裡理解 Googlebot 怎麼讀、怎麼比對、怎麼決定收不收錄,比記任何 SEO 結論都可靠。
AI 爬蟲有哪些?GPTBot、ClaudeBot、Google-Extended 全表
這一塊是變化最快的。AI 爬蟲的名字會新增、會改名、會越分越細,一家公司常常把「訓練用的」和「搜尋用的」拆成不同名字。下面這張表整理的是撰文時的常見名單,你要定期回各家官方文件核對,別把任何清單當成永遠不變的答案。

| 訪客名稱 | 所屬公司 | 主要用途 |
|---|---|---|
GPTBot | OpenAI | 抓內容去訓練生成式 AI 模型 |
OAI-SearchBot | OpenAI | ChatGPT 搜尋功能的即時檢索 |
ClaudeBot | Anthropic | 抓內容去訓練 Claude 模型 |
anthropic-ai | Anthropic | 舊名稱,現行檢索改由其他名字負責 |
PerplexityBot | Perplexity | Perplexity 搜尋的檢索 |
Google-Extended | 控制 Googlebot 抓到的內容能不能拿去訓練 Gemini | |
Applebot-Extended | Apple | Apple AI 訓練用途 |
CCBot | Common Crawl | 公開網頁資料集,常被拿去訓練模型 |
Bytespider | ByteDance | 字節跳動相關產品 |
Meta-ExternalAgent | Meta | Meta AI 代理 |
Amazonbot | Amazon | Amazon 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 在「收錄」階段做事。訪客抓得到內容,看到 noindex 之後就不把它收進搜尋資料庫,這才是「不要出現在搜尋結果」的正確工具。X-Robots-Tag 做的事跟 noindex 一樣,只是它用在伺服器回應層,特別適合 PDF、試算表這類不是網頁的檔案。
實務上要搭配著用。用 robots.txt 管大範圍「不想被抓」的區域,例如搜尋結果頁、篩選頁、暫存目錄。用 noindex 處理單一頁面「不要收錄」的需求。用 X-Robots-Tag 處理非網頁檔案的收錄控制。這幾個訊號要跟你的網站架構最佳化策略一起看,否則很容易出現「robots.txt 封了、但內部連結還是指過去」這種自相矛盾。架構和封鎖不一致,是技術 SEO 最常見的自殘組合。
九個最常見的 robots.txt 錯誤
把這幾年高頻出現的錯誤整理出來,每一條都附上判斷方法。如果你對技術性的踩雷全貌有興趣,站上整理的常被忽略的技術 SEO 錯誤有更多案例可以對照。

- 封鎖了 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。

範本一:全部開放(內容站、品牌站、做 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: Googlebot 加 Allow: /,把主搜尋爬蟲放行回來。順序錯了,Google 會直接離開你的站。改完務必用網址檢查工具驗證幾個關鍵頁面。
一份 AI 開放決策框架
把要不要開放 AI 爬蟲這件事,拆成三個方向來想:內容類型、商業模式、品牌策略。

內容類型。公開資訊、教育內容、品牌內容,預設開放,被引用的價值高。付費內容、會員專屬,封鎖或加 noindex。機敏資料、個資、內部文件,一律封鎖,而且要驗證封鎖真的生效。
商業模式。靠廣告或訂閱變現的站,預設開放,AEO 是一條新的成長曲線。B2B 或利基市場,看內容敏感度,多數可以開放主搜尋、對 AI 訓練保守。內容資產或 IP 營運,預設封閉,只例外放行。
品牌策略。想成為 AI 引用來源、建立權威,預設開放。想保護原創、避免被模型稀釋,封鎖訓練類、保留搜尋類。純工具站、不在意品牌曝光,就看技術負載決定。
還有一條獨立要看的是伺服器負載。如果有機器人來得太頻繁,把你的網站弄慢了,你可以在網站前面裝一個「流量管制員」(技術上叫速率限流),規定同一個機器人每分鐘只能進來幾次。這層管制不必動到 robots.txt,而且比它更硬。或者暫時封鎖那個訪客的名字,等網站規模變大、設備升級了再開放。robots.txt 是粗工具,速率限流是細工具,兩個層次搭配用最有效率。
WordPress 的 robots.txt 要怎麼設?逐行拆給你看
前面給的範本是「整份抄了就能用」,這一段換個角度,把一份會實際用在 WordPress 內容站的 robots.txt,一條一條拆給你看。重點不在背起來,而在於搞懂每一行解決什麼問題、拿掉會怎樣、寫錯最常出現在哪裡。如果你用的是 WordPress,站上的WordPress SEO 最佳化整理會跟這段互相呼應。

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 不會馬上知道你改了,要等它下次來抓。

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.com 跟 shop.example.com 要各自有 robots.txt,各自控制。跨子網域的爬蟲政策不會自動繼承,很多人以為主網域設好就全部覆蓋,結果子網域整個門戶洞開。子網域和子目錄在 SEO 上的差別,站上子網域與子目錄的比較有完整說明。
我把某頁 Disallow 了,但 Search Console 顯示「已建立索引」,怎麼辦?
這就是前面講的「只有網址、沒有內容」收錄現象。Google 沒抓到內容,因為你封鎖了,但有其他來源連到這個網址,所以它還是被放進搜尋資料庫,只是沒有內容。要真正移除,改用 noindex 並允許抓取,讓 Googlebot 能讀到標籤;或在 Search Console 使用移除工具做暫時移除,等 Google 重新評估要不要從資料庫裡拿掉。
