robots.txt Disallow 控制爬蟲能否抵達頁面(爬取層),而 noindex 則告訴 Google 即使爬取了也不要索引該頁面(索引層)。兩者作用於不同階段:Disallow 阻止 Googlebot 進入,noindex 阻止 Google 將內容收錄至搜尋結果。同時使用兩者可能令 noindex 指令永遠無法被讀取,是常見的 SEO 陷阱。
一般而言,若頁面對使用者無價值,且不需要被索引,才考慮 noindex;若頁面根本不應被訪問(如 API 端點、後台),才使用 Disallow。兩者應有明確的適用邊界,而非互換使用。
robots.txt Disallow 是什麼?
robots.txt Disallow 指令告訴搜尋引擎爬蟲不要爬取特定路徑或頁面,是網站與爬蟲之間的第一道關卡。它屬於 Robots Exclusion Protocol 的一部分,存放於網站根目錄的 robots.txt 檔案中。
語法範例
robots.txt
User-agent: *
Disallow: /admin/
Disallow: /staging/
Disallow: /cart/上述範例告訴所有爬蟲(User-agent: *)不要爬取 /admin/、/staging/ 及 /cart/ 三個路徑。Disallow 是一個「禮貌性」協議,Google 通常會遵守,但惡意爬蟲不受約束。
Disallow 的合理應用場景
- 後台管理頁面(/admin/、/wp-admin/)
- 暫存或開發環境路徑(/staging/、/dev/)
- 搜尋結果頁、篩選頁(如:/search?q=)以節省爬取預算
- 購物車、結帳頁面(/cart/、/checkout/)
- 重複性高的分頁路徑(配合 canonical 使用)
Noindex 是什麼?
Noindex 是一個索引層指令,告訴 Google(及其他尊重此標準的搜尋引擎)不要將該頁面收錄至搜尋結果中。即使 Googlebot 成功爬取了該頁面,只要看到 noindex,就不會將其納入索引。
根據 Google 抓取及索引流程,Googlebot 必須先爬取頁面,才能讀取 noindex 指令。換言之,noindex 頁面仍會消耗抓取配額(Crawl Budget),只是爬取後 Google 會將其從索引中移除或不加入索引。
對於中小型網站(少於 1,000 頁),爬取預算通常不是問題。但如果網站屬大型網站(如電商平台、數據整合型、新聞媒體),如果 noindex 的頁面數量龐大,建議評估是否有更適合的處理方式,如使用 Disallow 去管理抓取預算,包括:
- 封鎖篩選/排序 URL,防止重複爬取
- 封鎖標籤/作者頁的無限分頁
實作方式一:Meta Robots Tag
<meta name="robots" content="noindex, nofollow">
<!-- 只阻止索引,允許連結被跟進 -->
<meta name="robots" content="noindex, follow">
實作方式二:X-Robots-Tag(HTTP Header)
當你需要對非 HTML 文件(如 PDF、圖片)套用 noindex 時,需使用 HTTP header 方式:
X-Robots-Tag: noindex
此方法適用於所有文件類型,需在伺服器或 .htaccess 設定,是處理 PDF 目錄頁面的最佳方式。
Noindex 的合理應用場景
- 測試版或草稿頁面(臨時發佈但不應被索引)
- PPC 專用頁面
- 法律文件頁(如條款、隱私政策——視情況而定)
最常見的錯誤組合:Disallow + Noindex
這是 SEO 界最常見的致命錯誤之一:在 robots.txt 中 Disallow 某頁面的同時,又在該頁面的 HTML 中加入 noindex。結果是:Google 被擋在門外,永遠讀不到 noindex 指令,導致頁面可能仍然出現在搜尋結果。
Googlebot 被 Disallow 阻止,從未爬取 /promo/ 頁面,因此永遠無法讀取 noindex 標籤。若有外部網站連結至 /promo/,這個 URL 仍可能以「無描述」的方式出現在 Google 搜尋結果中,形成一個無法靠 noindex 移除的殭屍頁面。
如何正確使用 Disallow 與 noindex
想讓頁面完全消失於搜尋結果
正確做法是先移除 Disallow,讓 Google 可以正常爬取頁面,並加入 noindex 標籤。當 Google 下次爬取後將頁面從索引中移除後,再考慮 Disallow。
切勿一開始就用 Disallow 封鎖,否則 Google 永遠讀取不到 noindex 指令。
想保留 noindex 但節省爬取預算
做法是先確保 noindex 已經生效,並透過 Google Search Console 確認頁面已從索引中移除,並且網站再無任何內部連結指向頁面,之後再考慮加上 Disallow 阻止日後爬取。
這個屬於進階操作,順序做錯會令 noindex 完全失效,所以務必先確認索引狀態,再加 Disallow。
想完全封鎖整個路徑
robots.txt Disallow 只是一個「禮貌性」協議,並非安全機制,無法阻止惡意爬蟲或直接輸入 URL 的使用者存取頁面。例如,OpenAI 的官方技術檔案曾表示 robots.txt 規則未必適用於用戶主導的爬蟲(如ChatGPT-User )。
因此,正確做法並不是靠 robots.txt,而是使用伺服器級別的密碼保護。
監控與工具運用
想立即移除已索引頁面時,可透過 Google Search Console 的「移除工具」加快處理,而非單靠 noindex 等待自然重新爬取。同時建議定期用 Google Search Console 的 URL 檢查工具,確認重要頁面沒有被誤設 noindex 或 Disallow,及早發現問題。
替代方案與技術細節
篩選頁、搜尋結果頁優先考慮用 canonical 標籤處理重複內容,而非直接 Disallow,保留頁面被正確歸因的可能。另外,非 HTML 文件(PDF、圖片)需要 noindex 時,記得使用 X-Robots-Tag,meta robots tag 對這類文件無效。
常見問題 FAQ
robots.txt Disallow 可以防止頁面出現在 Google 搜尋結果嗎?
不可以。robots.txt Disallow 只能阻止 Googlebot 爬取,無法阻止索引。如果其他網站有連結指向被封鎖的頁面,Google 仍可能在搜尋結果中顯示該 URL。要真正防止頁面被索引,需要使用 noindex 指令,並確保頁面未被 robots.txt 封鎖(因為封鎖會令 noindex 無法被讀取)。
noindex 和 nofollow 有什麼分別?
noindex 告訴 Google 不要索引此頁面;nofollow 告訴 Google 不要跟進此頁面上的連結(但頁面本身可能仍被索引)。兩者經常一起使用(noindex, nofollow),但各有獨立用途:nofollow 單獨使用時,頁面仍可出現在搜尋結果,只是頁面上的連結不會傳遞 PageRank。
為什麼我用了 noindex,頁面還是出現在 Google?
最常見原因有三個:(1)頁面被 robots.txt Disallow 封鎖,Google 爬取不到 noindex 指令;(2)Googlebot 尚未重新爬取並處理 noindex 標籤——通常需要數天至數週;(3)noindex 標籤的語法有誤(如大小寫錯誤或位置不在 <head> 內)。建議使用 Google Search Console URL Inspection Tool 即時確認狀態。
robots.txt 和 noindex 可以同時使用嗎?
技術上可以,但通常不建議同時對同一頁面設定 Disallow 和 noindex。原因是:Disallow 阻止 Googlebot 爬取,令 noindex 永遠無法被讀取,noindex 因此失效。正確做法是選擇其一:若只需阻止索引,使用 noindex 並確保沒有 Disallow;若需節省爬取預算,使用 Disallow,但接受頁面可能仍以 URL 形式出現在搜尋結果。
X-Robots-Tag 和 meta robots 的分別是什麼?
兩者效果相同,差異在於實作位置。meta robots 標籤位於 HTML 的 <head>,只適用於 HTML 頁面。X-Robots-Tag 是 HTTP response header,可應用於任何類型的文件,包括 PDF、圖片、影片等。若你需要對 PDF 目錄或圖片設置 noindex,X-Robots-Tag 是唯一選擇。
如果我想完全移除一個頁面,應該用 Disallow 還是 noindex?
應該先用 noindex,讓 Google 爬取後正式將頁面從索引移除。確認移除後,如果仍想節省 crawl budget,才可以額外加上 Disallow。切勿一開始就同時使用兩者。
關於作者

