漫游器元标记、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 不要在 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
不追踪相应网页上的链接。
none
等同于 noindex, nofollow
noarchive
不在搜索结果中显示缓存链接
nosnippet
不在搜索结果中显示该网页的文本摘要或视频预览。如果有静态图片缩略图,而且它能够实现更好的用户体验,那么就可能仍会显示。这适用于所有形式的搜索结果,包括在 Google 网页搜索、Google 图片和 Google 探索上的搜索结果。
max-snippet:[number]

在搜索结果的文字摘要中,最多只能使用 [number] 个字符。(请注意,网址可能会在搜索结果页中显示为多个搜索结果。)这并不会影响图片或视频预览。此限制适用于所有形式的搜索结果,例如 Google 网页搜索、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 助理。但是,如果发布商已单独授予内容使用权限,那么无法使用此限制。例如,如果发布商以页内结构化数据的形式提供内容(例如 AMP 网页和规范版本的文章),或与 Google 签订了许可协议,那么这个设置不会妨碍这些更具体的允许用途。

    如果发布商不希望 Google 将其 AMP 网页和规范版本的文章显示在搜索结果页或“探索”功能中时使用较大的缩略图,则应将 max-image-preview 的值指定为 standardnone

    示例:

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

    此网页上的视频在搜索结果中的视频摘要时长不得超过 [number] 秒。

    其他支持的值:

  • 0:根据 max-image-preview 设置,最多只能使用静态图片。
  • -1:没有限制。
  • 这适用于所有形式的搜索结果,例如 Google 网页搜索、Google 图片、Google 视频、Google 探索和 Google 助理。如果没有指定可解析的 [number],这个指令会被忽略。

    示例:

    <meta name="robots" content="max-video-preview:-1">
    notranslate
    不在搜索结果中提供该网页的译文。
    noimageindex
    不将该网页上的图片编入索引。
    unavailable_after: [date/time]

    在指定的日期或时间之后,不在搜索结果中显示这个网页。日期和时间必须以广泛采用的格式指定,包括但不限于 RFC 822RFC 850ISO 8601。如果没有指定有效的 [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 网页文字部分。你可以使用 spandivsection 元素中的 data-nosnippet HTML 属性,在 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 结构化数据为搜索呈现提供具体信息。漫游器元标记限制不会影响该结构化数据的使用,但为其他创意作品指定的结构化数据的 article.descriptiondescription 值除外。要根据这些 description 值指定预览的最大长度,请使用 max-snippet 漫游器元标记。例如,即使文本预览会受到限制,页面上的 recipe 结构化数据也可以包含在食谱轮播界面中。你可以使用 max-snippet 限制文本预览的长度,但是在使用结构化数据提供信息以获得富媒体搜索结果时,系统不会使用此漫游器元标记。

    要管理在网页中使用结构化数据的方式,请修改结构化数据类型和值本身,添加或移除信息,以便只提供你想提供给 Google 的数据。另外还请注意,在 data-nosnippet 元素内声明结构化数据后,这些数据仍然可以用于显示搜索结果。

    X-Robots-Tag 的实际实现

    你可以通过网站的网络服务器软件的配置文件将 X-Robots-Tag 添加到网站的 HTTP 响应中。例如,在基于 Apache 的网络服务器上,你可以使用 .htaccess 和 httpd.conf 文件。在 HTTP 响应中使用 X-Robots-Tag 的好处是,你可以指定要应用于整个网站的抓取指令。系统支持正则表达式,因此带来了很高的灵活性。

    例如,要在整个网站的所有 .PDF 文件的 HTTP 响应中添加 noindex, nofollow X-Robots-Tag,请将以下代码段添加到网站的 root .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 文件禁止抓取某一网页,那么抓取工具就不会找到任何关于索引编制/内容显示指令的信息,因此会忽略这些信息。如果索引编制/内容显示指令必须遵循,那么你不能禁止抓取工具抓取包含这些指令的网址。