Cyrus
16
8 月

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

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

Cyrus

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/

AllowDisallow 的優先級取決於規則的具體程度(更具體的路徑優先),而不是指令的先後順序。上述範例中 /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 標記與重複內容處理 → |