漫遊器中繼標記、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-Tag 就結合了 unavailable_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
不要追蹤這個網頁上的連結。
none
相當於 noindex, nofollow
noarchive
不要在搜索結果中顯示快取連結
nosnippet
不要在搜尋結果中顯示這個網頁的文字摘要或影片預覽畫面。系統仍可能會顯示靜態圖片縮圖 (如果有的話),以提供更優質的使用者體驗。這個指令適用於各種搜尋結果類型 (Google 的網頁搜尋、Google 圖片、探索)。
max-snippet:[number]

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

特殊值:

  • 0:不顯示任何網頁摘要。相當於 nosnippet
  • -1:網頁摘要沒有長度限制。
  • 範例:

    <meta name="robots" content="max-snippet:20">
    max-image-preview:[setting]

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

    接受的 setting 值:

  • none:不顯示圖片預覽畫面。
  • standard:可顯示預設的圖片預覽畫面。
  • large:可顯示較大的圖片預覽畫面,最多可達可視區域寬度規定。
  • 這個指令適用於各種搜尋結果類型 (例如 Google 網頁搜尋、Google 圖片、探索、Google 助理)。不過,如果發布者已另外授予內容使用權限,就不適用這項限制。舉例來說,如果發布者以網頁內結構化資料的形式提供內容,或是與 Google 簽訂授權協議,那麼這項設定就不會禁止這些特別允許的用途。

    範例:

    <meta name="robots" content="max-image-preview:standard">
    max-video-preview:[number]

    這個網頁在搜尋結果中的影片摘要最多只能為 [number] 秒。

    其他支援的值:

  • 0:根據圖片預覽上限設定,最多可以使用一張靜態圖片。
  • -1:沒有限制。
  • 這個指令適用於各種搜尋結果類型 (Google 的網頁搜尋、Google 圖片、Google 影片、探索、Google 助理)。如未指定可剖析的 [number],系統就會忽略這個指令。

    範例:

    <meta name="robots" content="max-video-preview:-1">
    notranslate
    不要在搜尋結果中提供這個網頁的翻譯。
    noimageindex
    不為這個網頁上的圖片建立索引。
    unavailable_after: [RFC-850 date/time]

    在指定的日期/時間後不在搜尋結果中顯示這個網頁。指定日期/時間時需使用 RFC 850 格式。如未指定有效的 [date/time],系統就會忽略這個指令。內容預設為沒有到期日。

    範例:

    <meta name="robots" content="unavailable_after: Sunday, 01-Sep-24 01:00:00 PDT">

    處理合併式索引和服務指令

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

    <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>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 結構化資料提供特定資訊,供我們在顯示搜尋結果時使用。漫遊器中繼標記限制不會在使用結構化資料時造成影響。如要管理網頁的結構化資料使用方式,您可以直接修改結構化資料的類型和值,並新增或移除資訊,僅提供您要供應的資料。另請注意,在 data-nosnippet 元素中宣告結構化資料後,這些資料仍可用於搜尋結果。

    實際導入 X-Robots-Tag

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

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

    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 檔案禁止系統檢索網頁,那麼檢索器就不會發現與索引或服務指令相關的任何資訊,而這些資訊也會因此遭到忽略。如果必須遵循索引或服務的指令,就不能禁止系統檢索包含這些指令的網址。