第 29 章:robots.txt 與 Meta Robots 完整教學
第 29 章:robots.txt 與 Meta Robots 完整教學

robots.txt 是什麼?
robots.txt 是一個純文字檔案,放在網站的根目錄下,用來告訴搜尋引擎爬蟲:「哪些目錄或頁面你不要爬」。它是爬蟲造訪網站時第一個讀取的檔案,也是控制 crawl budget 的第一道關卡。
https://example.com/robots.txt
關鍵觀念: robots.txt 是「禁止爬取」的指令,不是「禁止索引」。頁面可能仍會透過外部連結被 Google 索引(但不爬取就無法讀取內容)。
robots.txt 基本語法
User-agent: * # 適用於所有爬蟲
Disallow: /admin/ # 禁止爬取 /admin/ 目錄
Disallow: /private-page # 禁止爬取特定頁面
Allow: /admin/public/ # 例外允許(子目錄)
Sitemap: https://example.com/sitemap.xml
核心指令說明
| 指令 | 說明 | 範例 |
|---|---|---|
User-agent |
指定適用的爬蟲(* 代表全部) | User-agent: Googlebot |
Disallow |
禁止爬取的路徑 | Disallow: /wp-admin/ |
Allow |
允許爬取的路徑(用於例外) | Allow: /blog/public/ |
Sitemap |
指定 Sitemap 位置 | Sitemap: https://example.com/sitemap.xml |
Crawl-delay |
爬取延遲(秒),部分爬蟲支援 | Crawl-delay: 10 |
注意: Googlebot 不支援
Crawl-delay,但 Bingbot 和 Yandex 支援。控制 Google 爬取速度需透過 Search Console 的「爬取速度設定」。
robots.txt 實戰範例
範例一:基礎 WordPress 網站
User-agent: *
Disallow: /wp-admin/
Disallow: /wp-includes/
Disallow: /wp-content/plugins/
Disallow: /wp-content/themes/
Allow: /wp-content/uploads/
Sitemap: https://example.com/sitemap_index.xml
範例二:電商網站
User-agent: *
Disallow: /cart
Disallow: /checkout
Disallow: /my-account
Disallow: /search
Disallow: /wishlist
Disallow: /*?* # 禁止所有帶參數的 URL
Allow: /*?p= # 允許產品參數
Sitemap: https://shop.com/sitemap.xml
範例三:阻止特定爬蟲
# 阻止 AI 訓練爬蟲
User-agent: GPTBot
Disallow: /
User-agent: CCBot
Disallow: /
# 其他爬蟲正常
User-agent: *
Disallow: /private/
Sitemap: https://example.com/sitemap.xml
範例四:開發 / 測試環境
# 完全阻止所有爬蟲(適合 staging 環境)
User-agent: *
Disallow: /
Meta Robots 標籤:頁面級別控制
如果 robots.txt 是「全站層級」的控制,Meta Robots 就是「頁面級別」的精細控制。它放在 HTML 的 <head> 區塊內:
<meta name="robots" content="noindex, nofollow">
常用指令組合
| 指令 | HTML 語法 | 說明 |
|---|---|---|
noindex |
<meta name="robots" content="noindex"> |
不索引此頁面,不讓它出現在搜尋結果中 |
nofollow |
<meta name="robots" content="nofollow"> |
不追蹤此頁面上的所有連結 |
noindex, nofollow |
<meta name="robots" content="noindex, nofollow"> |
不索引 + 不追蹤連結 |
index, follow |
<meta name="robots" content="index, follow"> |
預設值(可省略) |
noarchive |
<meta name="robots" content="noarchive"> |
不要顯示頁庫存檔(快取) |
nosnippet |
<meta name="robots" content="nosnippet"> |
不要在搜尋結果中顯示摘要文字 |
max-snippet |
<meta name="robots" content="max-snippet:150"> |
限制摘要文字長度(字元) |
max-image-preview |
<meta name="robots" content="max-image-preview:large"> |
控制圖片預覽大小 |
notranslate |
<meta name="robots" content="notranslate"> |
不要提供翻譯連結 |
針對特定爬蟲
<!-- 只針對 Googlebot -->
<meta name="googlebot" content="noindex">
<!-- 只針對 Google 新聞 -->
<meta name="googlebot-news" content="noindex">
<!-- 只針對 Bing -->
<meta name="bingbot" content="noindex">
X-Robots-Tag:HTTP Header 級別控制
當你需要對非 HTML 檔案(如 PDF、圖片、Word 文件)設定索引規則時,可以在 HTTP Response Header 中加入:
X-Robots-Tag: noindex, nofollow
這對於控制以下類型檔案的索引特別有用:
– PDF 文件
– 圖片檔案
– 影片檔案
– JSON / API 回應
– 任何非 HTML 的資源
robots.txt vs Meta Robots vs X-Robots-Tag:何時用哪個?
| 情境 | 使用工具 | 原因 |
|---|---|---|
| 阻止爬取整個目錄(如後台) | robots.txt | 全站層級,減少 crawl budget 浪費 |
| 阻止特定頁面出現在搜尋結果 | Meta Robots noindex | 頁面級別精準控制 |
| 阻止 PDF 被索引 | X-Robots-Tag | PDF 無法使用 HTML meta 標籤 |
| 保護敏感內容不被看到 | 不要用 robots.txt | robots.txt 是公開檔案,反而暴露路徑 |
| 阻止搜尋結果顯示快取 | Meta Robots noarchive | 直接指定行為 |
| 阻止特定爬蟲(如 AI 訓練) | robots.txt | 簡單高效 |
⚠️ 重要安全提醒: robots.txt 是公開檔案(任何人都可以存取
example.com/robots.txt)。如果你有真正敏感的內容需要保護,請使用密碼驗證或 IP 限制,而不是 robots.txt。在 robots.txt 中列出敏感目錄等於告訴攻擊者「這裡有好東西」。
robots.txt 常見錯誤與陷阱
錯誤 1:用 Disallow 阻止索引
# 錯誤示範 — 這樣不會阻止頁面被索引!
User-agent: *
Disallow: /secret-page.html
如果 /secret-page.html 被其他網站連結,Google 仍可能把它索引(雖然爬蟲不會爬取,但可能從外部連結得知此頁面存在)。
正確做法: 在該頁面加上 <meta name="robots" content="noindex">
錯誤 2:意外阻止了必要資源
# 危險:阻止了 CSS 和 JS 檔案!
User-agent: *
Disallow: /assets/
Google 需要讀取 CSS 和 JS 來正確渲染頁面。如果阻止了這些資源,可能導致頁面渲染不完整,影響排名。
正確做法: 明確指定禁止的目錄,不要過度使用泛規則
錯誤 3:忘記 Allow 的優先級
User-agent: *
Disallow: /blog/
Allow: /blog/featured/
Allow 和 Disallow 的優先級取決於規則的具體程度(更具體的路徑優先),而不是指令的先後順序。上述範例中 /blog/featured/ 會被允許,因為它比 /blog/ 更具體。
錯誤 4:robots.txt 漏掉 Sitemap 指定
雖然不影響爬取行為,但指定 Sitemap 位置是最佳實踐,讓所有爬蟲(不只是手動提交對象)都能發現你的 Sitemap。
測試與驗證 robots.txt
Google Search Console 測試工具
- 前往 Search Console → 設定 → robots.txt 測試工具
- 輸入 URL 測試是否被正確阻止或允許
- 發現語法錯誤時會有提示
手動測試
直接在瀏覽器輸入 https://yourdomain.com/robots.txt 查看原始檔案
常見語法檢查項目
| 檢查項目 | 正確做法 |
|---|---|
| 編碼格式 | 必須是 UTF-8 |
| 行尾符號 | 使用 LF(Unix 格式),避免 CRLF 不一致 |
| 空行 | 每個 User-agent 區塊之間用空行分隔 |
| 路徑格式 | 路徑從根目錄開始計算,無須完整 URL |
| 大小寫 | 路徑區分大小寫 |
2026 年 robots.txt 新趨勢:AI 爬蟲管理
隨著 AI 訓練資料爬蟲的增長,越來越��的網站開始在 robots.txt 中專門針對 AI 爬蟲:
# 阻止主要 AI 訓練爬蟲
User-agent: GPTBot
Disallow: /
User-agent: CCBot
Disallow: /
User-agent: anthropic-ai
Disallow: /
User-agent: Google-Extended
Disallow: /
Google-Extended是用於控制內容是否被用於訓練 Google 的 AI 模型(如 Bard / Gemini)的專用爬蟲標識。
總結檢查清單
| 任務 | 說明 |
|---|---|
| ☐ 確認 robots.txt 存在於根目錄 | https://yourdomain.com/robots.txt |
| ☐ 禁止爬取後台和無意義頁面 | /admin、/wp-admin、搜尋結果頁等 |
| ☐ 不要用 robots.txt 阻止索引 | 改用 Meta Robots noindex |
| ☐ 不要阻止 CSS / JS 資源 | Google 需要它們來渲染頁面 |
| ☐ 指定 Sitemap 位置 | 在 robots.txt 中加入 Sitemap 指令 |
| ☐ 管理 AI 爬蟲 | 依需求阻止 GPTBot、CCBot 等 |
| ☐ 用 Search Console 測試 | 定期驗證 robots.txt 規則正確 |
| ☐ 確認開發/測試環境已阻止 | Staging 環境設定 Disallow: / |
| ☐ 需要 noindex 的頁面設定 Meta Robots | 而非依賴 robots.txt |
| ← 第 28 章:Sitemap 製作與提交 | 回索引 | 第 30 章:Canonical 標記與重複內容處理 → |
延伸閱讀:網站 SEO 學習與操作手冊
0 comments