SEO/GEO 進階 10 分鐘

Robots.txt 與 noindex 有什麼不同?別把爬取規則當成收錄開關

Robots.txt 管理爬蟲能否存取路徑,noindex 管理已讀取資源是否出現在搜尋結果。本文比較兩者、登入保護與移除方式,並提供可重複的驗證流程。

發布 2026/07/27 最後查核 2026/07/27
尚未開始
預計閱讀 10 分鐘

先說結論:robots.txt 管「能不能來讀」,noindex 管「讀完要不要收錄」

robots.txtnoindex 位在不同關卡。robots.txt 是放在網站根目錄的爬取規則,用來告訴指定爬蟲哪些路徑可以或不可以存取;noindex 是頁面或伺服器回應裡的索引規則,搜尋引擎必須先取得它,才知道不要讓該資源出現在搜尋結果。

因此,若目標是讓一個仍公開可開啟的網頁退出搜尋結果,通常應允許爬取並提供 noindex。不要同時在 robots.txt 阻擋該頁,否則爬蟲可能無法看到移除指令。若內容涉及個資、內部文件或付費權限,兩者都不是安全措施,應改用登入、授權或直接移除。

可以先用目的分流:

  1. 減少不重要路徑的爬取:評估使用 robots.txt
  2. 保留公開頁面,但不要出現在搜尋結果:使用可被爬取的 noindex
  3. HTML 檔案不要被索引:在 HTTP 回應加入 X-Robots-Tag: noindex
  4. 內容不能讓未授權者看到:使用登入與伺服器端權限控制。
  5. 資源已永久不存在:回傳正確的 404 或 410;若有真正等價的新位置,才做永久轉址。
爬蟲先通過網站存取大門取得頁面,之後由另一個索引保存關卡決定是否把頁面放入可搜尋檔案;被擋在門外的頁面無法送出自身指令
爬取與索引是兩道不同關卡。先阻擋爬取,不等於已要求搜尋引擎移除網址。

為什麼 robots.txt 擋住頁面,網址仍可能出現在搜尋結果?

搜尋引擎不只從頁面內容得知一個 URL,也能從站內連結、外部連結、Sitemap 或過去爬取紀錄發現它。Google 官方明確說明:被 robots.txt 禁止爬取的網頁,內容不會被 Googlebot 讀取,但若其他地方仍連向該 URL,網址本身仍可能被索引;結果可能只顯示網址或外部可得資訊,沒有正常摘要。

這不是 robots.txt 失效,而是它完成的任務只有「不要取得這個路徑」。網際網路工程任務組制定的 Robots Exclusion Protocol 也把這套規則定位為爬蟲被要求遵守的存取規範,並提醒它不是授權機制。robots.txt 本身是公開檔案,把敏感路徑寫進去反而可能讓路徑更容易被看見。

最小的規則可以長這樣:

User-agent: *
Disallow: /internal-search/

它表示符合這組規則的爬蟲不應存取 /internal-search/ 開頭的路徑。檔案必須放在對應主機的根目錄,例如 https://example.com/robots.txt;規則只作用於同一協定、主機與連接埠的範圍。Google 的解讀規格採用最具體的路徑匹配,同長度的 AllowDisallow 衝突時採用 Allow,所以不應只憑肉眼猜測大型規則的結果。

還要注意三項限制:

  • 合規搜尋爬蟲通常會遵守規則,但惡意或不支援的爬蟲不一定遵守。
  • 禁止爬取頁面,也可能連帶讓搜尋引擎看不到頁面引用的重要圖片、樣式或腳本。
  • 規則更新有快取與重新抓取時間,不是存檔後所有爬蟲立即切換。

noindex 要能被讀到,才有機會生效

HTML 頁面最常見的寫法,是在文件 <head> 放入:

<meta name="robots" content="noindex">

這項規則要求支援它的搜尋爬蟲不要在搜尋結果呈現該頁。頁面仍然可以由知道 URL 的使用者直接開啟,也可能被其他網站連結;noindex 管的是搜尋索引,不是網路存取權。

若資源不是 HTML,例如 PDF、圖片或伺服器產生的檔案,無法放入 meta element,可以在 HTTP response header 使用:

X-Robots-Tag: noindex

Google 與 Bing 的官方文件都說明其支援方式。實作後仍要看正式伺服器的實際回應,不能只檢查 CMS 後台的開關。快取代理層、反向代理、部署環境或版型條件都可能讓正式 header 與預期不同。

最常見的矛盾組合是:

User-agent: *
Disallow: /preview/
<meta name="robots" content="noindex">

如果同一個 /preview/ 頁面同時套用兩者,爬蟲先被擋在外面,就可能永遠讀不到 HTML 裡的 noindex。Search Console 的 Live Test 甚至會在這種情況下顯示「Crawl allowed? No」,但「Indexing allowed?」可能仍是 Yes,原因正是 Google 無法取得頁面來判讀 noindex

六種方法解決六種不同問題

四個並列情境分別呈現爬蟲被存取柵欄擋下、頁面卡片離開搜尋檔案架、內容進入上鎖房間,以及資源從原位置永久移除
控制爬取、排除索引、保護內容與移除資源不是同一件事;工具要跟著目標選。
真正目標優先方法搜尋爬蟲能否取得內容一般使用者能否開啟主要限制
減少特定路徑的爬取robots.txt符合規則者不應取得可以URL 仍可能從其他訊號被發現或顯示
公開頁保留,但不出現在搜尋結果noindex meta tag必須可以取得可以需等待重新爬取與處理
HTML 資源不出現在搜尋結果X-Robots-Tag: noindex必須可以取得回應可以要確認正式 header 真的存在
內容只給特定成員登入與授權未授權者不能取得僅授權者可以需要正確的權限與快取設計
資源永久消失、沒有替代內容404 或 410取得不存在狀態不可以站內連結與 Sitemap 也要清理
舊位置永久搬到等價新位置301 或 308 轉址會前往新位置會前往新位置不能把不相關舊頁一律轉到首頁

canonical 也不是其中任何一項的替代品。它用於一組重複或非常相似網址的代表版本選擇,不是保密、禁止爬取或刪除指令。若問題是參數版與乾淨版重複,先讀canonical 與重複網址的處理方法;若頁面根本不應出現在搜尋結果,才回到 noindex 或移除。

完整案例:同一個課程站,需要三種不同控制

以下是虛構教學案例,用來示範工具選擇與驗證,不是 MKT Notes 或任何網站的實際索引資料。

一個線上課程站有 60 篇正式教材、24 個站內搜尋結果頁、12 份可公開下載的 PDF 講義、會員訂單頁,以及一個會依輸入持續產生建議結果的查詢端點。團隊一開始在 robots.txt 同時封鎖搜尋結果、PDF、會員區與查詢端點,然後發現部分舊搜尋結果 URL 仍在 Google 顯示。

問題不是規則數量不夠,而是四類資源的目標不同:

資源團隊真正想要的結果合理處理驗證重點
60 篇正式教材可爬取、可索引允許存取,維持可索引Live Test 可取得;主要頁在 Page indexing 逐步正常
24 個站內搜尋結果頁使用者可開啟,不進搜尋結果移除 robots 阻擋,輸出 noindex原始 HTML 與正式回應有規則;重新爬取後退出索引
12 份 PDF 講義可下載,不進搜尋結果回應加入 X-Robots-Tag: noindexcurl -I 或瀏覽器網路回應可看到 header
會員訂單頁未登入者不能讀取伺服器端登入與授權無登入狀態不能取得個人內容,不能只靠 robots
查詢建議端點不需要搜尋爬蟲反覆請求robots.txt 阻擋對應路徑規則只涵蓋端點,不誤擋正式教材資源

這裡有一個可驗算的差異:真正需要 noindex 的公開 HTML 是 24 個頁面,需要 HTTP header 的非 HTML 是 12 份檔案,兩者合計 36 個可公開取得但不希望出現在搜尋結果的 URL。會員訂單不是第 37 種 noindex 頁面,而是存取權問題;查詢端點也不是等待移除的內容頁,而是爬取管理問題。

團隊先解除 24 個搜尋結果頁的爬取封鎖,確認它們回傳 200 且含 noindex,再讓搜尋引擎重新取得。舊結果不會在部署瞬間全部消失,因為系統要重新爬取與處理;若特定 URL 有急迫下架需求,可由已驗證站長在 Search Console 使用 Removals 工具暫時隱藏,但 Google 說明這只維持約六個月,仍須搭配永久方法。

八步檢查流程:從目的、正式回應到索引狀態

網站管理者先盤點頁面,再讓爬蟲通過開放大門取得排除索引指令,檢查正式回應後觀察搜尋檔案更新;另一條錯誤路徑在爬蟲讀取指令前就被關閉
要讓公開頁退出索引,流程是先讓爬蟲看見規則、驗證正式回應,再等待重新處理;爬取封鎖會截斷這條路。

1. 先寫出預期狀態

對每類 URL 記錄「是否允許匿名開啟、是否希望被爬取、是否希望被索引、是否有等價新位置」。不要從標籤名稱反推需求。

2. 建立實際 URL 樣本

從路由、Sitemap、站內連結、伺服器紀錄與 Search Console 各取樣。參數、大小寫、子網域與檔案版本可能是不同 URL,不能只測一個乾淨範例。

3. 檢查 robots.txt 的作用範圍

直接開啟正式站根目錄的 /robots.txt,確認回應成功、規則屬於正確主機,並抽查最具體的 AllowDisallow 結果。不要假設測試站與正式站使用同一份檔案。

4. 檢查 HTMLHTTP header

HTML 頁查看正式原始碼與呈現後頁面結構;非 HTML 資源查看 response header。若 meta 與 header 同時存在,確認沒有不同環境輸出互相衝突的指令。

5. 排除存取控制錯用

用未登入、無特殊 Cookie 的狀態打開敏感 URL。只要仍能看到內容,就代表 robots 或 noindex 沒有完成保護任務;應回到驗證與授權層修正。

6. 用 URL Inspection 分開看三個問題

Live Test 依序查看 Crawl allowed?、Page fetch 與 Indexing allowed?。前者回答爬取規則,後者回答是否讀到索引限制;有效的 Live Test 只表示現在可能可索引,不保證最後一定進入索引。

7. 修正後安排重新處理

對少量重要 URL 可要求重新建立索引;大量頁面則確保內部連結與 Sitemap 符合預期,等待正常重爬。若要讓頁面退出索引,不要修正 noindex 後又立刻重新加回爬取封鎖。

8. 記錄索引結果與例外

保存修改日、規則版本、樣本 URL、最後爬取日與 Page indexing 原因。把「預期排除」和「錯誤未索引」分開統計,不追求所有可發現 URL 都被收錄。

六個常見誤判與限制

robots.txt 寫了 noindex 就能移除頁面

Google 多年前曾處理過非標準寫法,但現行官方文件要求使用 meta tag 或 X-Robots-Tag。不要在 robots.txt 自創 Noindex: 欄位,也不要把歷史行為當成跨搜尋引擎標準。

同時 Disallownoindex 是雙重保險

這兩項不是疊加保護。前者可能讓爬蟲無法取得後者,造成頁面遲遲不能依 noindex 更新索引狀態。

noindex 可以保護機密內容

知道 URL 的人仍可能直接開啟頁面,其他服務也不一定遵守索引規則。個資、合約、後台與付費內容必須使用真正的身分驗證與權限控制。

移除工具等於永久刪除

Search Console Removals 是快速、暫時的搜尋結果隱藏工具,不會刪除網站內容。若沒有同步改成 404、410、登入保護或可讀取的 noindex,期限過後仍可能重新出現。

URL Inspection 顯示可索引,就保證一定收錄

Live Test 不檢查所有條件,也不能預測重複頁與 canonical 最終選擇。它適合驗證現在能否取得與是否讀到規則,不是收錄保證書。需要完整理解時,可搭配爬取、索引與排名的三關診斷

為了節省爬取,把所有腳本與樣式都擋掉

若重要內容或版面需要這些資源才能正確呈現,搜尋引擎可能難以理解頁面。先用伺服器紀錄找出真正大量、低價值的路徑,再做窄範圍控制;不要用一條寬泛規則換來不可見的呈現問題。

最後帶走:先選目標,再選控制層

  • robots.txt 管理合規爬蟲對路徑的存取,不是可靠的搜尋結果移除工具。
  • noindex 管理頁面或資源是否出現在搜尋結果,但爬蟲必須取得規則。
  • HTML 使用 robots meta tag;非 HTML 資源可使用 X-Robots-Tag response header。
  • 私密內容使用登入與授權,不能依賴爬蟲自律。
  • 永久移除使用正確的 404、410 或等價頁永久轉址;急迫時再把暫時移除工具當過渡。
  • 驗證時要同時看正式 robots.txtHTMLHTTP header、未登入存取與 Search Console 狀態。

真正穩定的做法,是把爬取、索引、存取權與資源生命週期分開設計。只要先回答「誰可以讀、爬蟲需不需要來、搜尋結果要不要顯示、原位置是否仍存在」,就不會再把同一個控制項硬套到所有問題,也能讓內部連結與網站架構維持清楚、可驗證的搜尋脈絡。

SOURCE LOG

資料來源

  1. Google Search Central:robots.txt 的用途與限制
  2. Google Crawling Infrastructure:建立與提交 robots.txt
  3. Google Crawling Infrastructure:Google 如何解讀 robots.txt 規則
  4. 網際網路工程任務組:Robots Exclusion Protocol 第 9309 號標準
  5. Google Search Central:Robots meta tag 與 X-Robots-Tag 規格
  6. Google Search Console:URL Inspection 工具
  7. Google Search Console:Removals 工具與永久移除方法
  8. Bing Webmaster Tools:支援的 robots meta tag 與屬性