meta robots 與 X-Robots-Tag:noindex、nofollow 完整用法
robots 是唯一能 在單一頁面層級 明確拒絕被收錄的方式。robots.txt 管的是路徑,這個標籤管的是這一頁。
<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:設定值 | 圖片預覽尺寸(none/standard/large) |
notranslate | 不要在搜尋結果提供翻譯 |
noimageindex | 不要索引這一頁的圖片 |
unavailable_after: 日期 | 指定日期後不再顯示 |
多個指令用逗號分隔:
<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 換成爬蟲的名稱,就只對它生效:
<!-- 對所有爬蟲 -->
<meta name="robots" content="noindex">
<!-- 只對 Google 的一般搜尋爬蟲 -->
<meta name="googlebot" content="noindex">
<!-- 只對 Google 新聞 -->
<meta name="googlebot-news" content="noindex">2
3
4
5
6
7
8
特定名稱的設定會覆蓋 robots 的設定。實務上很少需要分開,除非要對不同搜尋引擎給不同待遇。
X-Robots-Tag:非 HTML 檔案的解法
PDF、圖片、影片、壓縮檔沒有 <head> 可以放 meta 標籤。這時要用 HTTP 回應標頭:
X-Robots-Tag: noindex指令語法完全相同。伺服器設定的寫法(以 Nginx 為例):
# 所有 PDF 都不收錄
location ~* \.pdf$ {
add_header X-Robots-Tag "noindex, nofollow";
}2
3
4
也可以針對特定爬蟲:
X-Robots-Tag: googlebot: noindex整批控制時標頭比標記方便
需要對數千個網址套同一個規則時,在伺服器層設定一次標頭,比逐頁改標記容易得多。測試機的全站 noindex 就很適合這樣做。
最致命的錯誤:和 Disallow 併用
這兩個不能同時用在同一個網址上
# robots.txt
User-agent: *
Disallow: /secret/2
3
<!-- /secret/page.html 的檔頭 -->
<meta name="robots" content="noindex">2
這樣是無效的。 noindex 寫在頁面裡,爬蟲必須 下載這一頁才讀得到;但 Disallow 叫它不要下載。結果是那個 noindex 永遠不會被看見。
更糟的是,如果有外部網站連到 /secret/page.html,搜尋引擎仍可能把 網址本身 列進搜尋結果,只是因為讀不到內容而顯示空白摘要,完全違背了原本的意圖。
正確的做法是二選一:
| 目的 | 該用什麼 |
|---|---|
| 不想被收錄 | 允許爬取 + 頁面標 noindex |
| 不想浪費爬取預算 | robots.txt 的 Disallow(接受網址可能被列出) |
| 兩者都要 | 允許爬取加 noindex,等移出索引後再改成 Disallow |
移除已收錄頁面的順序
順序做反了會卡住,記住這三步:
- 保持可被爬取,在頁面加上
noindex(或回傳X-Robots-Tag)。 - 等它被重新抓取並移出索引,可以用 Search Console 的網址檢查加速。
- 確認移除後,才考慮改用
Disallow封鎖或直接下架。
直接刪頁面不是最快的
直接刪掉會變成 404,搜尋引擎仍需要多次確認才會移除。如果內容是永久下架,回傳 410 會比 404 快一些。
nofollow 的現況
nofollow 現在被視為 提示 而不是命令,搜尋引擎會自行決定是否採納。相關的還有兩個更精確的值,用在 <a> 標籤上:
| 值 | 用在 |
|---|---|
rel="nofollow" | 不想背書的一般連結 |
rel="sponsored" | 付費連結、廣告、業配 |
rel="ugc" | 使用者產生的內容(留言、論壇貼文) |
<a href="https://example.com" rel="sponsored">贊助連結</a>用法與站內連結佈局見 內部連結與錨點文字 。
檢查清單
| 項目 | 標準 |
|---|---|
想被收錄的頁面沒有意外的 noindex | 必備 |
後台與會員區有 noindex | 必備 |
站內搜尋結果頁有 noindex, follow | 建議 |
測試機整站有 noindex(標頭或標記) | 必備 |
沒有同時用 Disallow 和 noindex | 必備 |
非 HTML 檔案改用 X-Robots-Tag | 依需求 |
上線前搜一次 noindex
最常見的意外是「開發時加了 noindex 忘了拿掉」。上線前在建置產物裡全域搜尋一次這個字串,也記得檢查 HTTP 回應標頭。
常見問題
沒寫 meta robots 的頁面預設是什麼?
預設是可索引且會追蹤連結,也就是等同於同時指定 index 與 follow。所以想被收錄的頁面根本不必寫這個標籤,只有要拒絕收錄或限制呈現方式時才需要。
noindex 和 robots.txt 的 Disallow 可以一起用嗎?
不能,這是最致命的錯誤組合。noindex 寫在頁面的檔頭裡,爬蟲必須下載這一頁才讀得到;Disallow 卻叫它不要下載。結果是爬蟲永遠讀不到那個 noindex,網址反而可能因為外部連結而被收錄,詳見 爬蟲規則 robots.txt 。
什麼時候該用 X-Robots-Tag 而不是 meta 標籤?
非 HTML 的檔案。PDF、圖片、影片、壓縮檔沒有檔頭可以放 meta 標籤,只能用 HTTP 回應標頭。另外需要整批控制大量網址時,在伺服器層設定標頭也比逐頁改標記容易。
nofollow 還能阻止權重傳遞嗎?
現在它被視為提示而不是命令,搜尋引擎會自行決定是否採納。它仍然該用在使用者產生的內容與付費連結上,但那更多是為了標示連結性質,而不是精算權重流向。
已經被收錄的頁面要怎麼移除?
先讓那一頁保持可被爬取並加上 noindex,等搜尋引擎重新抓取、把它移出索引之後,才可以考慮改用封鎖或直接下架。順序反了就會卡在收錄狀態拿不下來。