
robots.txt 是放在網站根目錄的一個純文字檔,用來告訴搜尋引擎的爬蟲:「網站上哪些地方不用來抓」。爬蟲來抓網站之前,會先讀取 https://你的網址/robots.txt。
這篇文章 2015 年的版本,提供了一份擋掉 wp-content、wp-includes、分類分頁、feed 等十幾行的 robots.txt。這份寫法現在反而會傷害 SEO,請不要再用,下面會說明原因與現在的正確做法。
WordPress 已經自動產生 robots.txt
WordPress 網站就算根目錄沒有 robots.txt 檔案,打開 https://你的網址/robots.txt 也會看到內容。這是 WordPress 自動產生的虛擬 robots.txt,預設內容大致是:
User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
Sitemap: https://你的網址/wp-sitemap.xml每一行的意思:
User-agent: *:下面的規則適用所有爬蟲。Disallow: /wp-admin/:不用抓後台。Allow: /wp-admin/admin-ajax.php:但這個檔案要開放,很多前台功能會用到它。Sitemap::網站地圖的位置。WordPress 5.5 起內建網站地圖,會自動加上這一行;有裝 SEO 外掛的話,會換成外掛產生的網站地圖。
對大多數網站來說,這樣就夠了。
幾個補充:
- 舊版文章說「沒有 robots.txt 會產生 404 錯誤頁、被收錄成錯誤頁面」,這是錯的。找不到 robots.txt 時,搜尋引擎只會當成「全部都可以抓」,不會把它當成網頁收錄;何況 WordPress 本來就會產生虛擬的版本。
- 打開 robots.txt 出現 404 的話,檢查「設定 → 固定網址」是不是選了最陽春的「預設」格式,虛擬 robots.txt 需要搭配其他格式的固定網址才會運作。WordPress 也要裝在網域的根目錄,robots.txt 才會在正確的位置。
- robots.txt 如果回應伺服器錯誤(例如 500),Google 可能會暫停抓取整個網站,要盡快處理。
需要自訂時,三種改法
想擋掉特定路徑(例如購物網站排序、篩選條件產生的大量網址)或特定爬蟲時,擇一使用:
- 用 SEO 外掛編輯(推薦):Yoast SEO、Rank Math 都有 robots.txt 編輯功能(Yoast 在「工具」的檔案編輯器,Rank Math 在「一般設定」裡),不用自己連 FTP。
- 上傳實體檔案:在網站根目錄放一個
robots.txt,WordPress 的虛擬版本就會失效,完全以你的檔案為準。記得自己寫上 Sitemap 那一行。 - 用程式修改:WordPress 提供
robots_txt這個 filter,可以改寫虛擬 robots.txt 的內容,適合外掛或主題開發者。
自己寫實體檔案的話,從預設內容開始,再加上需要的規則:
User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
Sitemap: https://example.com/wp-sitemap.xmlSitemap 那一行要換成你的網站地圖網址;用 Yoast SEO 或 Rank Math 的話,通常是 https://你的網址/sitemap_index.xml。網站地圖的設定與提交方式,請看WordPress 網站地圖怎麼做。
為什麼舊寫法會傷害 SEO?
逐條看舊版文章的寫法:
Disallow: /wp-content/和Disallow: /wp-includes/:這兩個資料夾裡是主題的 CSS、JavaScript 和你上傳的圖片。Google 現在會像瀏覽器一樣「看」網頁,抓不到 CSS 和 JS,就無法正確判斷版面、手機版好不好用;擋掉wp-content也會讓uploads裡的圖片無法出現在 Google 圖片搜尋。這兩行一定要拿掉。- 分類、標籤的分頁(
/category/*/page/、/tag/*/page/):分頁是爬蟲找到舊文章的路徑之一,擋掉反而讓舊文章更難被發現。 - feed(
/feed):RSS feed 不會造成問題,搜尋引擎也會用它發現新內容,不需要擋。 - 附件頁(
/attachment/):WordPress 6.4 起,新安裝的網站預設已經關閉附件頁;SEO 外掛也能把附件頁轉到圖片本身。用這些方式處理,比用 robots.txt 擋好。 - 留言分頁、
replytocom、trackback:WordPress 的文章頁本身就有 canonical(標準網址)標籤,搜尋引擎會把這些重複的網址歸回原本的文章,不需要擋。 - 站內搜尋結果(
/?s=):WordPress 5.7 起,站內搜尋結果頁會自動加上noindex,Google 看到後就不會收錄,不需要另外擋。
重要觀念:Disallow 不等於不收錄
很多人以為在 robots.txt 寫了 Disallow,那個網頁就不會出現在 Google。不是這樣的。
Disallow只是叫爬蟲「不要來抓內容」。- 如果其他網站有連結到這個網址,Google 還是可能把網址收錄進搜尋結果,只是沒有內容摘要。Search Console 裡會看到「已建立索引,但遭到 robots.txt 封鎖」這類狀態。
- robots.txt 是公開的,任何人都看得到你擋了哪些路徑,不能拿來隱藏機密頁面。需要保密的內容請用密碼或會員登入保護。
不想被收錄,要用 noindex
真的不希望某個網頁出現在搜尋結果(例如感謝頁、會員專區、測試頁),正確做法是讓網頁帶有 noindex 標記,而且不要在 robots.txt 擋它。爬蟲要抓得到網頁,才看得到 noindex。
方法一:SEO 外掛(最簡單)
Yoast SEO、Rank Math 在每篇文章、頁面的編輯畫面下方,都有「是否允許搜尋引擎在結果中顯示」或「No Index」之類的選項,設定即可。
方法二:程式碼
WordPress 5.7 起有 wp_robots 這個 filter,可以在 functions.php 加入(建議放在子主題或 Code Snippets 外掛裡):
add_filter( 'wp_robots', function ( $robots ) {
if ( is_page( array( 'thank-you', 'members' ) ) ) {
$robots['noindex'] = true;
}
return $robots;
} );把 thank-you、members 換成頁面的網址代稱(slug),這些頁面的 <head> 裡就會出現含有 noindex 的 robots 標籤。已經裝了 SEO 外掛的話,用外掛的設定就好,避免兩邊的設定互相打架。
PDF 等非網頁檔案
PDF、Word 檔沒有 <head> 可以放標籤,要用 HTTP 標頭 X-Robots-Tag。Apache 主機可以在 .htaccess 加入:
<IfModule mod_headers.c>
<FilesMatch "\.pdf$">
Header set X-Robots-Tag "noindex"
</FilesMatch>
</IfModule>「阻止搜尋引擎索引這個網站」
後台「設定 → 閱讀」的「阻止搜尋引擎索引這個網站」,勾選後 WordPress 會在所有頁面加上 noindex,適合網站還在開發、測試的時候。網站正式上線後一定要記得取消勾選,這是新網站搜尋不到的常見原因之一。
想擋 AI 爬蟲?
有些網站不希望內容被拿去訓練 AI,可以在 robots.txt 針對特定爬蟲擋掉,例如:
User-agent: GPTBot
Disallow: /
User-agent: Google-Extended
Disallow: /
User-agent: CCBot
Disallow: /GPTBot是 OpenAI 的爬蟲,CCBot是 Common Crawl 的爬蟲。Google-Extended控制的是內容能不能用在 Google 的 AI 模型,不影響 Google 搜尋的收錄與排名。- robots.txt 是「請求」而不是強制,遵不遵守取決於對方。要不要擋,是網站自己的選擇,也要考慮被 AI 服務引用可能帶來的曝光。
改完怎麼檢查?
- 用瀏覽器打開
https://你的網址/robots.txt,確認內容是你要的。 - Google Search Console 的「設定」頁面裡有 robots.txt 報告,可以看到 Google 最近一次讀到的內容、有沒有錯誤。
- 想知道某個網址有沒有被擋,在 Search Console 上方的「網址審查」輸入網址查詢。
延伸閱讀
- WordPress 網站地圖(XML Sitemap)怎麼做?內建功能、SEO 外掛與提交 Google 教學
- WordPress 文章 SEO 怎麼做?標題、網址、內文、圖片與提交搜尋引擎的重點整理
- .htaccess 用法大全:轉址、HTTPS、安全防護、壓縮與快取常用設定(WordPress 適用)
robots.txt、noindex 和網站地圖都是 SEO 的基本功,寫錯一行就可能讓整個網站搜尋不到。正威網路行銷是 25 年經驗的基隆網頁設計工作室,提供 SEO 搜尋引擎優化與網站維護託管,歡迎來聊聊。







發表留言
還沒有人留言,歡迎第一個分享你的想法或問題。留言經審核後才會顯示,Email 不會公開。