漫游器元标记、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 文件禁止抓取某一网页,那么抓取工具就不会找到任何关于索引编制/内容显示指令的信息,因此会忽略这些信息。如果索引编制/内容显示指令必须遵循,那么您不能禁止抓取工具抓取包含这些指令的网址。