漫遊器中繼標記、data-nosnippet 和 X-Robots-Tag 規格

本文詳細說明如何透過網頁層級和文字層級設定,調整 Google 在搜尋結果中呈現內容的方式。使用網頁層級設定,請在 HTML 網頁或 HTTP 標頭加入中繼標記;若透過文字層級設定,則可以在網頁的 HTML 元素上使用 data-nosnippet 屬性。

使用漫遊器中繼標記

漫遊器中繼標記可讓您以網頁為單位,精細地控管各網頁的索引建立情形以及在 Google 搜尋結果中的呈現方式。漫遊器中繼標記應置於指定網頁的 <head> 部分,如下所示:

<!DOCTYPE html>
<html><head>
<meta name="robots" content="noindex" />
(…)
</head>
<body>(…)</body>
</html>

在上述範例中,漫遊器中繼標記指示搜尋引擎不要在搜尋結果顯示這個網頁,name 屬性的值 (robots) 則指定將這個指令套用到所有檢索器。如果只想將指令套用在特定檢索器,請將 name 屬性的 robots 值改成該檢索器名稱。這裡所謂的特定檢索器也就是指「使用者代理程式」,各個檢索器會透過各自的使用者代理程式來要求網頁,而 Google 標準網路檢索器的使用者代理程式名為 Googlebot。如果只想禁止 Googlebot 為網頁建立索引,可以按照下列範例更新標記:

<meta name="googlebot" content="noindex" />

這個標記現在會專門指示 Google 不要在其搜尋結果中顯示這個網頁。namecontent 屬性都不需區分大小寫。

搜尋引擎可能備有不同用途的各式檢索器,如要查看 Google 檢索器的完整清單,請參閱這篇文章。舉例來說,如要在 Google 網頁搜尋結果顯示某個網頁,但不要讓該網頁顯示在 Google 新聞,請使用下列中繼標記:

<meta name="googlebot-news" content="noindex" />

如要個別指定多個檢索器,可以使用多個漫遊器中繼標記:

<meta name="googlebot" content="noindex">
<meta name="googlebot-news" content="nosnippet">

使用 X-Robots-Tag HTTP 標頭

X-Robots-Tag 可做為特定網址的 HTTP 標頭回應元素。任何可在漫遊器中繼標記裡使用的指令都能指定為 X-Robots-Tag。以下示範如何在 HTTP 回應內,利用 X-Robots-Tag 指示檢索器不要為網頁建立索引:

HTTP/1.1 200 OK
Date: Tue, 25 May 2010 21:42:43 GMT
(…)
X-Robots-Tag: noindex
(…)

您可以在 HTTP 回應中合併多個 X-Robots-Tag 標頭,也可以選擇指定一份以半形逗號分隔的指令清單。以下示範如何在 HTTP 標頭回應內合併 noarchive X-Robots-Tagunavailable_after X-Robots-Tag

HTTP/1.1 200 OK
Date: Tue, 25 May 2010 21:42:43 GMT
(…)
X-Robots-Tag: noarchive
X-Robots-Tag: unavailable_after: 25 Jun 2010 15:00:00 PST
(…)

使用 X-Robots-Tag 時,也可以先指定使用者代理程式,再指定指令。舉例來說,下列這組 X-Robots-Tag HTTP 標頭可以針對不同搜尋引擎,有條件允許在搜尋結果中顯示網頁:

HTTP/1.1 200 OK
Date: Tue, 25 May 2010 21:42:43 GMT
(…)
X-Robots-Tag: googlebot: nofollow
X-Robots-Tag: otherbot: noindex, nofollow
(…)

沒有指定使用者代理程式的指令適用於所有檢索器。HTTP 標頭、使用者代理程式名稱和指定的值都無需區分大小寫。

有效的索引建立和摘要提供指令

您可以使用下列指令,透過漫遊器中繼標記和 X-Robots-Tag 控制網頁摘要的索引建立及提供狀況。在搜尋結果中,系統會透過網頁摘要這類簡短的文字節錄,呈現文件與使用者查詢的關聯性。下表說明 Google 認可的所有指令和這些指令的意義,每一個值都代表特定指令。若有多個指令,會以半形逗號分隔清單合併顯示,這些指令沒有區分大小寫。

指令

all

在建立索引或提供網頁摘要方面沒有任何限制。這個指令是預設值,明確列出這個指令並不會產生任何影響。

noindex

不要在搜尋結果中顯示這個網頁。如果未指定這個指令,代表網頁可以建立索引並顯示在搜尋結果。

nofollow

不要追蹤這個網頁上的連結。如果未指定這個指令,代表 Google 能追蹤網頁上的連結,找出連結的網頁。進一步瞭解 nofollow

none

等同於 noindex, nofollow

noarchive

不要在搜索結果中顯示快取連結。如果未指定這個指令,代表 Google 能夠產生快取網頁,且使用者可以透過搜尋結果存取該快取網頁。

nosnippet

不要在這個網頁的搜尋結果中顯示文字摘要或影片預覽畫面。但是如果有靜態圖片縮圖,而且顯示出來有助於提升使用者體驗,那麼系統仍可能會顯示這類縮圖。 這個指令適用於各種搜尋結果類型,例如 Google 的網頁搜尋、Google 圖片、探索。

如果未指定這個指令,代表 Google 能夠根據在網頁上找到的資訊產生文字摘要和影片預覽。

max-snippet: [number]

這個搜尋結果所能顯示的文字摘要,不能超過 [number] 個半形字元。(請注意,同一個網址在搜尋結果網頁中可能會顯示為多筆搜尋結果)。這個指令不會對圖片或影片預覽畫面造成影響,且適用於各種搜尋結果類型,例如 Google 網頁搜尋、Google 圖片、探索、Google 助理。不過,如果發布者已另外授予內容使用權限,就不適用這項限制。舉例來說,如果發布者以網頁內結構化資料的形式提供內容,或是與 Google 簽訂授權協議,這項設定就無法禁止這些特別允許的用途。如未指定可剖析的 [number],系統會忽略這個指令。

如果未指定這個指令,Google 會自行選擇網頁摘要長度。

特殊值:

  • 0:不顯示任何網頁摘要。等同於 nosnippet
  • -1:由 Google 選擇摘要的長度,以最能有效協助使用者找到您的內容並將使用者導向您的網站為判斷標準。

範例:

如要禁止在搜尋結果中顯示文字摘要,請使用:


<meta name="robots" content="max-snippet:0">

如要允許搜尋結果顯示最多 20 個字元的文字摘要,請使用:


<meta name="robots" content="max-snippet:20">

如要表示文字摘要的顯示長度沒有字元數限制,請使用:


<meta name="robots" content="max-snippet:-1">

max-image-preview: [設定]

設定這個網頁在搜尋結果中的圖片預覽大小上限。

如果未指定 max-image-preview 指令,代表 Google 能夠顯示預設大小的圖片預覽畫面。

接受的 [設定] 值:

  • none:不顯示圖片預覽畫面。
  • standard:可顯示預設的圖片預覽畫面。
  • large:可顯示較大的圖片預覽畫面,最廣可延伸至可視區域寬度。

這個指令適用於各種搜尋結果類型,例如 Google 網頁搜尋、Google 圖片、探索和 Google 助理。不過,如果發布者已另外授予內容使用權限,就不適用這項限制。舉例來說,如果發布者以網頁內結構化資料的形式 (例如文章的 AMP 和標準版本) 提供內容,或是與 Google 簽訂授權協議,這項設定就無法禁止這些特別允許的用途。

如果發布者不希望 Google 搜尋和 Google 探索在顯示文章的 AMP 網頁和標準版本時使用較大的縮圖圖片,應將 max-image-preview 值指定為 standardnone

範例:


<meta name="robots" content="max-image-preview:standard">

max-video-preview: [數字]

搜尋結果最多只能為這個網頁上的影片顯示 [數字] 秒的影片摘要。

如果未指定 max-video-preview 指令,代表 Google 能夠在搜尋結果中顯示影片摘要,且您讓 Google 自行決定預覽的時間長度。

特殊值:

  • 0:根據 max-image-preview 設定,最多可以使用一張靜態圖片。
  • -1:沒有限制。

這個指令適用於各種搜尋結果類型,例如 Google 的網頁搜尋、Google 圖片、Google 影片、探索、Google 助理。如未指定可剖析的數值,系統會忽略這個指令。

範例:


<meta name="robots" content="max-video-preview:-1">

notranslate

不要在搜尋結果中提供這個網頁的翻譯。如果未指定這個指令,代表 Google 能夠在搜尋結果旁顯示連結,協助使用者查看網頁內容的翻譯版本。

noimageindex

不為這個網頁上的圖片建立索引。如果未指定這個值,代表系統能夠為網頁上的圖片建立索引,並顯示在搜尋結果中。

unavailable_after: [日期/時間]

在指定的日期/時間之後,不要在搜尋結果中顯示這個網頁。指定日期/時間時須使用廣為採用的格式,包括但不限於 RFC 822RFC 850ISO 8601。 如未指定有效的日期/時間,系統會忽略這個指令。根據預設,內容並沒有有到期日。

如未指定這個指令,代表這個網頁能夠無限期顯示在搜尋結果中。

範例:


<meta name="robots" content="unavailable_after: 2020-09-21">

合併索引指令和搜尋結果指令

您可以使用半形逗號合併漫遊器中繼標記指令,藉此建立擁有多個指令的指示。在下方範例中,漫遊器中繼標記指示網路檢索器不要為網頁建立索引,也不要檢索網頁上的任一連結:

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

以下範例將文字摘要上限設定為 20 個字元,並允許顯示較大的圖片預覽畫面:

<meta name="robots" content="max-snippet:20, max-image-preview:large">

如果多個檢索器各指定了不同的指令,搜索引擎會併用所有否定指令。例如:

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

Googlebot 在檢索包含這些中繼標記的網頁時,會將網頁解譯為具備 noindex, nofollow 指令。

使用 data-nosnippet HTML 屬性

您可以指定不要使用 HTML 網頁的哪些文字部分來產生網頁摘要,方法是在 HTML 元素層級使用 spandivsection 元素上的 data-nosnippet HTML 屬性。系統會將 data-nosnippet 視為布林屬性。 和其他布林屬性一樣,這個屬性無論指定任何值都會受到忽略。為了確保機器可以解讀,HTML 部分必須是有效的 HTML 程式碼,而且所有適用的標記都要有對應的結束標記。

範例:

<p>This text can be shown in a snippet
<span data-nosnippet>and this part would not be shown</span>.</p>

<div data-nosnippet>not in snippet</div>
<div data-nosnippet="true">also not in snippet</div>
<div data-nosnippet="false">also not in snippet</div>
<!-- all values are ignored -->

<div data-nosnippet>some text</html>
<!-- unclosed "div" will include all content afterwards -->

<mytag data-nosnippet>some text</mytag>
<!-- NOT VALID: not a span, div, or section -->

一般來說,Google 會轉譯網頁,以便為網頁建立索引,但不保證一定會轉譯網頁。 因此,在系統擷取 data-nosnippet 時,網頁可能已經轉譯,也可能尚未轉譯。為避免轉譯與否造成的不確定性,請勿透過 JavaScript 新增或移除現有節點的 data-nosnippet 屬性。 透過 JavaScript 新增 DOM 元素時,如果您是初次將元素新增到網頁的 DOM,請視需要加入 data-nosnippet 屬性。使用自訂元素時,如果需要使用 data-nosnippet,請使用 divspansection 元素來納入或轉譯這些元素。

使用結構化資料

漫遊器中繼標記可控管 Google 要從網頁中自動擷取多少內容,並顯示為搜尋結果。不過,許多發布者也會使用 schema.org 結構化資料提供特定資訊,以供顯示搜尋結果時使用。除了 article.description 值以及其他創作內容所指定的 description 值之外,使用其他結構化資料時都不會受到漫遊器中繼標記設定限制的影響。如要根據這些 description 值指定預覽長度上限,請使用 max-snippet 漫遊器中繼標記。舉例來說,即使預覽文字受到限制,網頁上的 recipe 結構化資料還是可以納入食譜的輪轉介面中。您可以使用 max-snippet 限制預覽文字的長度,但如果同時透過複合式搜尋結果的結構化資料提供資訊,系統就不會套用 max-snippet 漫遊器中繼標記。

如要管理網頁使用的結構化資料,請直接修改結構化資料的類型和值,藉此新增或移除資訊,僅提供您想提供的資料。另請注意,在 data-nosnippet 元素中宣告結構化資料後,這些資料仍可用於搜尋結果。

實際導入 X-Robots-Tag

您可以透過網站網路伺服器軟體的設定檔,將 X-Robots-Tag 加入網站的 HTTP 回應中。以 Apache 型網路伺服器為例,您可以使用.htaccess 和 httpd.conf 檔案。搭配 HTTP 回應使用 X-Robots-Tag 的優勢是能夠指定要套用到整個網站的檢索指令,如此一來,就能因支援規則運算式獲得更高的作業彈性。

舉例來說,如要將 noindex, nofollow X-Robots-Tag 新增到整個網站所有 PDF 檔案的 HTTP 回應中,請將以下程式碼片段加到 Apache 型網站的根目錄 .htaccess 檔案或 httpd.conf 檔案,或 NGINX 型網站的 .conf 檔案。

Apache:

<Files ~ "\.pdf$">
  Header set X-Robots-Tag "noindex, nofollow"
</Files>

NGINX:

location ~* \.pdf$ {
  add_header X-Robots-Tag "noindex, nofollow";
}

非 HTML 檔案 (例如圖片檔),因為無法在 HTML 中使用漫遊器中繼標記,您可以使用 X-Robots-Tag。以下示範為整個網站的圖片檔 (.png、.jpeg、.jpg、.gif) 新增 noindex X-Robots-Tag 指令:

Apache:

<Files ~ "\.(png|jpe?g|gif)$">
  Header set X-Robots-Tag "noindex"
</Files>

NGINX:

location ~* \.(png|jpe?g|gif)$ {
  add_header X-Robots-Tag "noindex";
}

整合檢索作業和索引指令/搜尋結果指令

檢索網址時,檢索器會尋找漫遊器中繼標記和 X-Robots-Tag HTTP 標頭。如果 robots.txt 檔案禁止系統檢索網頁,檢索器就找不到與索引或搜尋結果指令相關的任何資訊,這些資訊就會因此遭到忽略。如果想要檢索器遵循索引或搜尋結果相關的指令,就不能禁止系統檢索包含這些指令的網址。