在 WordPress 中,位於網站根目錄的 robots.txt 檔案會依照 RFC 9309 中標準化的 Allow 與 Disallow 規則,告訴合規的爬蟲哪些路徑可以請求。這些規則存放在一份純文字的 UTF-8 文件中,僅含單一使用者代理程式群組、路徑模式從 URL 的第一個字元開始比對,並採用區分大小寫的最長比對解析方式。WordPress 的情況稍為特殊,因為即使沒有實體檔案存在,應用程式也會透過 PHP 產生一個虛擬的 robots.txt,所以大多數網站在 /robots.txt 已能以寬鬆的預設值回應。若要真正掌握控制權,您可以在瀏覽器中產生一份符合標準的檔案,用來取代或擴充該虛擬回應,並確認部署的版本確實是載入的內容。Robots.txt Generator 負責處理協定語法、大小寫規則、最長比對行為,以及相對來源的 Sitemap 行,因此您發布的檔案會符合 RFC 9309 所記載的格式。WordPress 接著提供兩種發布路徑:直接將檔案寫入網站根目錄,或透過 SEO 外掛編輯已渲染的虛擬檔案。兩者的最終目標相同:在您預定管轄的完整 scheme、主機與連接埠上擁有一份真實的 robots.txt。

為何 WordPress 的 Robots.txt 與靜態網站不同
靜態網站要嘛在根目錄提供 robots.txt 檔案,要嘛完全沒有。WordPress 不必如此二分化,因為應用程式本身就會渲染一份。WordPress 在初始化時透過 WP_Rewrite 註冊一個虛擬的 /robots.txt 端點,因此即使磁碟上沒有檔案,對該路徑的請求仍會產生動動態回應。預設的虛擬回應包含三條規則:
- User-agent: *
- Disallow: /wp-admin/
- Allow: /wp-admin/admin-ajax.php
這個預設值已足夠寬鬆,既能讓 WordPress 網站保持可爬取,又能將後台排除於搜尋索引之外,對許多網站而言已堪用。但它也有所限制:沒有新增自訂規則的後台介面,每當您想擴充檔案內容時,都必須仰賴外掛或實體檔案。Yoast SEO、Rank Math 與 All in One SEO 等 SEO 外掛會新增一個設定分頁,用您貼上的內容覆寫虛擬回應。最終結果仍是虛擬檔案;外掛只是把您的編輯轉譯到同一個動動態端點而已。
將真正的 robots.txt 上傳到文件根目錄則走不同的程式碼路徑。Apache 與 Nginx 會直接提供該檔案,根本不會把請求交給 WordPress,因此您的檔案會自動勝過虛擬版本。安裝在文件根目錄的 WordPress 網站會將 robots.txt 放在與 wp-config.php 相同的資料夾中。架設在子目錄、可透過頂級網域存取的網站,則需在實際要管轄的來源頂層、與安裝目錄並列的位置發布檔案,且該來源必須與規則所套用的 scheme、主機與連接埠完全一致。
在產生檔案之前先規劃 Disallow 路徑
在開啟產生器之前,請先開啟一份文字檔,列出您想從合規爬蟲隱藏的內容。選擇取決於您的 WordPress 安裝實際提供的內容。常見的候選項目包括:
- /wp-admin/(後台區域,含編輯畫面)
- /wp-includes/(核心檔案,鮮少在搜尋結果中有用)
- /search(內部搜尋結果頁)
- /?s=(透過查詢參數達到同上效果)
- /cart/、/checkout/、/my-account/(WooCommerce 流程)
- /tag/(標籤彙整頁,通常無 SEO 價值)
- /author/(單一作者網站的作者彙整頁)
- /feed/(RSS 摘要)
- /trackback/(舊式 trackback 端點)
請跳過您網站上不存在的路徑。針對回傳 404 的路徑加入 Disallow 規則並無明顯作用,只會增加雜訊。同時也請跳過您實際希望被索引的區塊;不小心封鎖重要的內容分類是 WordPress robots.txt 最常見的錯誤。
針對每個路徑,決定要使用前綴比對或完全比對。RFC 9309 採用最長比對,因此 Disallow: /draft 會以相同方式封鎖 /draft、/drafts 與 /draft/secret。若只要比對完全相同的段落,請在後方加上 $:Disallow: /draft$。路徑區分大小寫:/Private 與 /private 是不同的規則。Google 的 robots.txt 參考資料 中也強調了合規爬蟲適用的相同最長比對與大小寫規則。
同時規劃 Sitemap 行。產生器會自動在結尾加上 Sitemap: <your origin>/sitemap.xml,其中來源為 scheme 加主機加任何保留的明確連接埠。若您實際的 sitemap 位於其他位置,或維護著含多個檔案的 sitemap index,請在發布前編輯產生出的輸出內容。每一條 Sitemap 指令都必須是完整的絕對 URL,而非路徑,且獨立成行。
在瀏覽器中產生 Robots.txt 檔案
產生器遵循協定的「群組後接規則」結構,且完全在您的分頁中執行,因此您輸入的 URL 不會離開瀏覽器。步驟對應工具所記載的工作流程:
- 開啟 Robots.txt Generator。
- 在 URL 欄位中輸入完整的網站 URL,包含 scheme(http 或 https)以及任何非預設的連接埠。帶有路徑、查詢或片段的 URL 會被簡化為來源,因此貼上 https://example.com/blog/?utm=1#top 與貼上 https://example.com 會產生相同的基礎。明確的連接埠會被原樣保留。
- 選擇爬蟲政策。Allow all crawlers 會寫入 Allow: /,適用於希望盡量被索引的公開內容網站。Block all crawlers 會寫入 Disallow: /,僅適用於不應被任何合規搜尋引擎造訪的測試環境或私人網站。Selective disallow 是 WordPress 常見的選擇,因為它讓您列出後台與搜尋路徑,同時保持文章與頁面可被爬取。
- 在選擇性模式中,每行輸入一個路徑。每條非空白的規則都必須以 / 開頭。支援萬用字元 * 與結尾定位 $,因為協定將它們定義為比對字元。井字號 #(協定將其視為註解)會被拒絕,以避免因多餘字元導致部分規則消失。重複的完全相同項目會合併為第一筆,而規則數上限為 50 條不重複規則。
- 產生檔案。輸出為純 UTF-8 文字,包含 User-agent: *、您選擇的規則,以及依據來源產生的 Sitemap 行。
- 檢視產生出的輸出。確認大小寫、前綴與定位字元。確認 Sitemap 行指向真實的 sitemap;若您的 sitemap 位於不同路徑,或維護 sitemap index,請在發布前編輯文字內容。
若想並排比較政策形狀,下表摘要說明每個選項實際會寫入的內容:
| 爬蟲政策 | 產生的規則區塊 | 典型的 WordPress 用途 | Sitemap 行 |
|---|---|---|---|
| Allow all crawlers | Allow: / | 追求完整索引的公開內容網站 | 永遠附加 |
| Selective disallow | 每個輸入路徑對應一行 Disallow | 大多數 WordPress 部落格與商業網站 | 永遠附加 |
| Block all crawlers | Disallow: / | 測試、上線前或私人內部網路 | 永遠附加 |
在 WordPress 上發布檔案
兩種發布路徑只能擇一,以免發生版本衝突。可靠的途徑有兩種。
路線 A:上傳實體 robots.txt。使用主機商提供的檔案管理員(cPanel、Plesk)、SFTP 用戶端或主機的檔案瀏覽器。導覽至 WordPress 安裝的文件根目錄。新增一個名為 robots.txt 的小寫檔案。貼上產生的文字並儲存,以正確的 MIME 類型 text/plain 提供。WordPress 在該路徑上會被略過;伺服器會直接以靜態內容回傳您的檔案。若要還原,刪除該檔案後虛擬回應即自動恢復。
路線 B:透過 SEO 外掛編輯。若尚未安裝,請先安裝信譽良好的 SEO 外掛,再開啟其 robots.txt 編輯器。Yoast 在 SEO → Tools → File editor 下提供該功能;Rank Math 在 General Settings → robots.txt 下;All in One SEO 則在 Tools → robots.txt 下。將產生的文字貼入外掛的編輯器並儲存。外掛會在每次請求時將您的內容注入虛擬回應。此路線較為快速,但會與外掛綁定:停用外掛會使檔案還原為 WordPress 預設的虛擬回應。
請注意,這兩種路線無法乾淨地組合使用。SEO 外掛的編輯器無法為您寫入實體檔案;而當兩者同時存在時,實體檔案會勝過虛擬回應,這代表外掛中的編輯會靜悄悄地消失。一旦選定一種方式,請持續沿用。
針對相關的 WordPress 作業,creating a robots.txt file 這份實用指南更詳細地介紹了該協定。針對 sitemap 相關的 WordPress 決策,以手動方式建立檔案的內容收錄於 creating an XML sitemap in WordPress without plugins。
發布後驗證並維護檔案
檔案上線後,請務必執行同樣的四項檢查。
直接載入。在瀏覽器中開啟 https://yourdomain.com/robots.txt。確認回應內容與您產生的內容一致,並確認 Content-Type 為 text/plain。如果 Content-Type 是 text/html,通常代表佈景主題或樣板攔截了請求並回傳了錯誤的文件。
搜尋引擎測試工具。在搜尋引擎自家的工具中提交該 URL(如果有的話)。Google 的 Search Console 提供 robots.txt 測試工具,會回報 Googlebot 上次擷取的版本。Bing 和 Yandex 也提供類似的檢查功能,針對它們所管理的合規爬蟲。
重點測試重要 URL。挑選一個您希望被索引的 URL,以及一個您希望被封鎖的 URL,然後模擬一次合規的擷取。路徑比對結果應符合您的意圖,並遵循最長匹配規則,這也是 RFC 9309 所規範的標準行為。
保留舊檔。將被取代的內容另外儲存一份。若搜尋引擎出現異常狀況,請先還原舊檔,再進行除錯。
請勿將 robots.txt 視為存取控制機制。正如 RFC 9309 所明確指出的,該協定並非安全機制:合規的爬蟲可能會遵守相關規則,但惡意用戶端可以忽略它們,而且您列出的每一個路徑都是公開可見的。草稿、私密文章、付費內容或會員專區,仍然需要伺服器端的驗證與授權。遮蔽 /drafts/ 的同一條 Disallow 規則,對任何猜到該 URL 的人來說並沒有任何隱藏效果。
當爬蟲的存取毫無價值時(例如內容薄弱的標籤彙整、內部搜尋結果、後台端點),可以加以封鎖。當目標是真正的保護時,請勿使用封鎖;正確的工具是身分驗證,而不是 robots.txt 規則。當內容模型變更時,請更新檔案:標籤代稱、作者彙整、自訂文章類型彙整,以及 WooCommerce 端點都會隨時間變動。每當結構改變時,請重新執行產生器並重新發布,同時請記住 Crawl-delay 指令並未被加入,因為它並不屬於 RFC 9309 的一部分,而且各家爬蟲對它的支援並不一致。
最後,請勿假設封鎖就能保證被移除。被 robots.txt 封鎖的 URL,若有其他網站連結到它,仍可能以有限的資訊形式出現在搜尋結果中。若要實際移除索引,請使用搜尋引擎的移除工具、X-Robots-Tag 的 noindex 標頭,或為該頁面設定密碼保護。