Skip to content

meta robots 與 X-Robots-Tag:noindex、nofollow 完整用法

meta robots 索引控制:noindex 與 nofollow

robots 是唯一能 在單一頁面層級 明確拒絕被收錄的方式。robots.txt 管的是路徑,這個標籤管的是這一頁。

html
<meta name="robots" content="noindex, follow">

想被收錄的頁面不必寫

預設值等同於 index, follow。只有要 拒絕收錄限制呈現方式 時才需要這個標籤。

指令一覽

指令作用
index允許索引(預設值,通常不必寫)
noindex不要收錄這一頁
follow追蹤頁面上的連結(預設值)
nofollow不要追蹤頁面上的連結
none等同 noindex, nofollow
all等同 index, follow
noarchive不要提供頁庫存檔
nosnippet不要顯示文字摘要
max-snippet:數字摘要最多幾個字元
max-image-preview:設定值圖片預覽尺寸(nonestandardlarge
notranslate不要在搜尋結果提供翻譯
noimageindex不要索引這一頁的圖片
unavailable_after: 日期指定日期後不再顯示

多個指令用逗號分隔:

html
<meta name="robots" content="noindex, nofollow, noarchive">

四種常用組合

情境寫法為什麼
後台、會員專區noindex, nofollow不收錄,也不需要追連結
感謝頁、站內搜尋結果noindex, follow不收錄,但頁面上的連結仍有價值
已下架的活動頁noindex保留頁面但不出現在搜尋結果
有時效性的頁面unavailable_after: 2026-12-31T23:59:59+08:00到期自動退出搜尋結果

noindex, follow 比 noindex, nofollow 常用

noindex 只是說「不要收錄這一頁」,並不表示這一頁上的連結沒用。站內搜尋結果頁不該被收錄,但它連出去的商品頁值得被爬到。預設選 noindex, follow,除非真的不想讓爬蟲往下走。

針對特定爬蟲

name 換成爬蟲的名稱,就只對它生效:

html
<!-- 對所有爬蟲 -->
<meta name="robots" content="noindex">

<!-- 只對 Google 的一般搜尋爬蟲 -->
<meta name="googlebot" content="noindex">

<!-- 只對 Google 新聞 -->
<meta name="googlebot-news" content="noindex">

特定名稱的設定會覆蓋 robots 的設定。實務上很少需要分開,除非要對不同搜尋引擎給不同待遇。

X-Robots-Tag:非 HTML 檔案的解法

PDF、圖片、影片、壓縮檔沒有 <head> 可以放 meta 標籤。這時要用 HTTP 回應標頭:

X-Robots-Tag: noindex

指令語法完全相同。伺服器設定的寫法(以 Nginx 為例):

nginx
# 所有 PDF 都不收錄
location ~* \.pdf$ {
  add_header X-Robots-Tag "noindex, nofollow";
}

也可以針對特定爬蟲:

X-Robots-Tag: googlebot: noindex

整批控制時標頭比標記方便

需要對數千個網址套同一個規則時,在伺服器層設定一次標頭,比逐頁改標記容易得多。測試機的全站 noindex 就很適合這樣做。

最致命的錯誤:和 Disallow 併用

這兩個不能同時用在同一個網址上

# robots.txt
User-agent: *
Disallow: /secret/
html
<!-- /secret/page.html 的檔頭 -->
<meta name="robots" content="noindex">

這樣是無效的。 noindex 寫在頁面裡,爬蟲必須 下載這一頁才讀得到;但 Disallow 叫它不要下載。結果是那個 noindex 永遠不會被看見。

更糟的是,如果有外部網站連到 /secret/page.html,搜尋引擎仍可能把 網址本身 列進搜尋結果,只是因為讀不到內容而顯示空白摘要,完全違背了原本的意圖。

正確的做法是二選一:

目的該用什麼
不想被收錄允許爬取 + 頁面標 noindex
不想浪費爬取預算robots.txtDisallow(接受網址可能被列出)
兩者都要允許爬取加 noindex,等移出索引後再改成 Disallow

移除已收錄頁面的順序

順序做反了會卡住,記住這三步:

  1. 保持可被爬取,在頁面加上 noindex(或回傳 X-Robots-Tag)。
  2. 等它被重新抓取並移出索引,可以用 Search Console 的網址檢查加速。
  3. 確認移除後,才考慮改用 Disallow 封鎖或直接下架。

直接刪頁面不是最快的

直接刪掉會變成 404,搜尋引擎仍需要多次確認才會移除。如果內容是永久下架,回傳 410 會比 404 快一些。

nofollow 的現況

nofollow 現在被視為 提示 而不是命令,搜尋引擎會自行決定是否採納。相關的還有兩個更精確的值,用在 <a> 標籤上:

用在
rel="nofollow"不想背書的一般連結
rel="sponsored"付費連結、廣告、業配
rel="ugc"使用者產生的內容(留言、論壇貼文)
html
<a href="https://example.com" rel="sponsored">贊助連結</a>

用法與站內連結佈局見 內部連結與錨點文字

檢查清單

項目標準
想被收錄的頁面沒有意外的 noindex必備
後台與會員區有 noindex必備
站內搜尋結果頁有 noindex, follow建議
測試機整站有 noindex(標頭或標記)必備
沒有同時用 Disallownoindex必備
非 HTML 檔案改用 X-Robots-Tag依需求

上線前搜一次 noindex

最常見的意外是「開發時加了 noindex 忘了拿掉」。上線前在建置產物裡全域搜尋一次這個字串,也記得檢查 HTTP 回應標頭。

常見問題

沒寫 meta robots 的頁面預設是什麼?

預設是可索引且會追蹤連結,也就是等同於同時指定 indexfollow。所以想被收錄的頁面根本不必寫這個標籤,只有要拒絕收錄或限制呈現方式時才需要。

noindex 和 robots.txt 的 Disallow 可以一起用嗎?

不能,這是最致命的錯誤組合。noindex 寫在頁面的檔頭裡,爬蟲必須下載這一頁才讀得到;Disallow 卻叫它不要下載。結果是爬蟲永遠讀不到那個 noindex,網址反而可能因為外部連結而被收錄,詳見 爬蟲規則 robots.txt

什麼時候該用 X-Robots-Tag 而不是 meta 標籤?

非 HTML 的檔案。PDF、圖片、影片、壓縮檔沒有檔頭可以放 meta 標籤,只能用 HTTP 回應標頭。另外需要整批控制大量網址時,在伺服器層設定標頭也比逐頁改標記容易。

nofollow 還能阻止權重傳遞嗎?

現在它被視為提示而不是命令,搜尋引擎會自行決定是否採納。它仍然該用在使用者產生的內容與付費連結上,但那更多是為了標示連結性質,而不是精算權重流向。

已經被收錄的頁面要怎麼移除?

先讓那一頁保持可被爬取並加上 noindex,等搜尋引擎重新抓取、把它移出索引之後,才可以考慮改用封鎖或直接下架。順序反了就會卡在收錄狀態拿不下來。

延伸閱讀

參考資料:Google 搜尋中心:robots meta 標記與 X-Robots-Tag 規範