robots.txt 怎麼寫:常見規則、誤區與檢查方法(2026)
robots.txt 管的是抓取,不是直接決定是否收錄。本文圍繞企業站常見目錄、引數頁和 WordPress 場景,整理 robots.txt 的寫法、誤區與檢查方法。
robots.txt 管的是抓取,不是直接決定是否收錄。本文圍繞企業站常見目錄、引數頁和 WordPress 場景,整理 robots.txt 的寫法、誤區與檢查方法。
`robots.txt` 不是一個“遮蔽搜尋結果”的開關,它的核心作用是告訴爬蟲哪些路徑不要抓,哪些路徑可以抓。很多網站把它寫錯之後,最常見的問題不是更安全,而是把本來該抓取的內容擋住了,或者誤以為“禁止抓取”等於“不會收錄”。
如果你把 `robots.txt` 當成抓取管理檔案來理解,很多問題就會簡單得多:它影響的是抓取許可權,不是索引結果本身,更不是網頁安全方案。這一點 Google 官方robots.txt 介紹和robots.txt 規範講得很清楚。
`robots.txt` 是放在網站根目錄下的純文字檔案,常見地址是:
https://example.com/robots.txt搜尋引擎爬蟲訪問網站時,通常會先讀取這個檔案,判斷哪些路徑允許抓取、哪些路徑不建議抓取。它基於 robots exclusion protocol 工作,主要用於抓取層面的管理。
它更適合處理這些場景:
它不適合解決這些問題:
如果頁面已經被發現過,僅僅 `Disallow` 並不保證它一定不會出現在搜尋結果裡。真正涉及索引控制,通常要結合 `noindex` 或狀態碼處理,而不是隻靠 `robots.txt`。
幾個 Google 官方明文、但很多人不知道的事實,能幫你避開大坑:
指定規則針對哪個爬蟲。寫 `*` 代表通用規則。
表示不希望抓取的路徑。
在更細的路徑層級上允許抓取,常見於你禁止了大目錄,但想放開其中某個資源時使用。
告訴爬蟲站點地圖在哪裡。
一個很基礎的例子:
User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
Sitemap: https://example.com/sitemap_index.xml這類寫法在 WordPress 站點裡很常見。
尤其是現在很多頁面依賴前端資源渲染,如果把關鍵 CSS、JS 路徑誤攔住,搜尋引擎看到的頁面就可能不完整。這類問題通常會直接影響抓取理解和頁面評估。
WordPress 常見做法是限制 `/wp-admin/`,但放開 `admin-ajax.php`。這類路徑本來就不需要作為公開內容被抓取。
如果站內搜尋會生成大量重複結果頁,這類 URL 往往不值得反覆抓取。它們更適合從抓取層面做限制,再結合索引策略處理。
很多電商或目錄型網站會因為引數組合產生大量重複 URL。這個時候 `robots.txt` 能幫你減少無效抓取,但是否要完全攔截,仍然要看頁面是否有獨立價值。
如果這些目錄只是內部使用,應該從上線流程和訪問許可權上先管好,再決定是否額外寫入 `robots.txt`。
這是最常見的誤解。`Disallow` 是”不讓抓”,不是”保證不收錄”。如果頁面已經被其他地方發現,仍可能以 URL 形式出現在結果中。
這裡有個反直覺的坑:想讓頁面不被收錄,反而不能 block 它——因為一旦 block,Googlebot 根本訪問不到頁面,也就讀不到頁面裡的 noindex 標籤。正確做法對照如下:
| 你想要的效果 | 正確做法 | 常見錯誤 |
|---|---|---|
| 別浪費抓取在低價值目錄 | robots.txt 裡 Disallow(允許它URL可能仍被收錄) | 以為 Disallow 了就不會出現在搜尋裡 |
| 頁面徹底不出現在搜尋結果 | 頁面加 noindex meta,且不要在robots.txt裡block它 | 同時 Disallow + noindex → Google爬不到、讀不到noindex,反而可能露出URL |
| 隱藏敏感內容 | 用登入/許可權控制 | 靠 robots.txt”隱藏”——它本身公開可讀,等於給了路徑清單 |
有的網站一上來就把整個 `/blog/`、`/product/` 或 `/wp-content/` 都擋掉,結果搜尋引擎連核心內容和資源都抓不到。
比如你本來只想攔某個測試路徑,卻因為模式寫得太寬,把一批正常頁面也帶進去了。規則越少越清楚越好。
robots 規則一旦寫錯,影響通常是整片目錄,不是單頁小問題。上線前最好至少做一次路徑核對。
`robots.txt` 本身是公開的,別人完全可以直接訪問。真正敏感的內容不該靠它保護。
這不一定致命,但如果站點地圖已經穩定存在,順手寫進去通常更利於爬蟲發現結構。
如果一邊在 `robots.txt` 裡阻止抓取,一邊又希望搜尋引擎讀取頁面裡的 `noindex`,就會出現邏輯衝突。因為頁面都抓不到,很多頁面級訊號也就無法讀取。
如果你用的是 WordPress,很多基礎規則可以透過 SEO 外掛或伺服器配置輔助生成,但不要因為“外掛會自動生成”就完全不檢查。自動生成的規則只覆蓋基礎情況,不一定適合你的目錄結構。
建議至少確認這幾件事:
如果站點部署在 Cloudways 這類環境裡,也一樣要從實際 URL 結構出發看規則,而不是直接套模板。
一個簡單的檢查順序是:
如果網站最近改過模板、遷移過伺服器、換過快取或 CDN,這一步尤其不能省。很多 `robots.txt` 問題不是寫在 CMS 裡,而是被部署流程或快取層改掉了。
一句話區分:
兩者不能混用。頁面是否該保留在索引裡,往往要配合robots meta、canonical、狀態碼和內鏈策略一起判斷。
把 `robots.txt` 理解成網站給爬蟲的一份抓取路線說明,比把它理解成“封禁工具”更準確。它的價值不在於寫得多複雜,而在於邊界清楚:該抓的別擋,不該浪費資源的地方也別放任亂抓。
對於大多數企業站來說,`robots.txt` 只要把基礎規則寫對,再配合索引控制和頁面結構治理,已經足夠。真正麻煩的從來不是語法,而是沒分清”抓取控制”和”索引控制”。如果你正在系統理順這塊,可以一起看XML Sitemap 怎麼做和404/410/301 怎麼選——它們和 robots.txt 都是”該讓 Google 抓誰、收誰”的一套治理。