Robots meta 标记、data-nosnippetX-Robots-Tag 规范

本文档详细介绍了如何使用网页级和文本级设置调整 Google 在搜索结果中呈现内容的方式。您可以向 HTML 网页或 HTTP 标头中添加 meta 标记,从而指定网页级设置。您可以在网页中的 HTML 元素上使用 data-nosnippet 属性,从而指定文本级设置。

请注意,只有在抓取工具可以访问包含这些设置的网页时,系统才会读取和遵循这些设置。

<meta name="robots" content="noindex"> 规则适用于搜索引擎抓取工具。如需屏蔽非搜索抓取工具(例如 AdsBot-Google),您可能需要添加针对具体抓取工具的规则(例如 <meta name="AdsBot-Google" content="noindex">)。

使用robots meta 标记

借助robots meta 标记,您可以使用精细的网页级设置,控制各个网页被编入索引并在 Google 搜索结果中显示给用户的方式。请将robots meta 标记放置在给定网页的 <head> 部分,如下所示:

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

在此示例中,robots meta 标记会指示搜索引擎不要在搜索结果中显示相应网页。name 属性的值 (robots) 指定此规则适用于所有抓取工具。namecontent 属性都不区分大小写。如需针对特定的抓取工具,请将 name 属性的 robots 值替换为这个抓取工具的用户代理令牌。Google 支持在robots meta 标记中使用以下两个用户代理令牌,其他值会被忽略:

  1. googlebot:适用于所有文本结果。
  2. googlebot-news:适用于新闻结果。

例如,如需指示 Google 不要在搜索结果中显示某个网页,您可以将 googlebot 指定为 meta 标记的名称:

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

如需在 Google 网页搜索结果中显示某个网页,但不显示在 Google 新闻中,请使用 googlebot-news meta 标记:

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

要分别指定多个抓取工具,请使用多个robots meta 标记:

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

如需禁止将非 HTML 资源(例如 PDF 文件、视频文件或图片文件)编入索引,请改用 X-Robots-Tag 响应标头

使用 X-Robots-Tag HTTP 标头

X-Robots-Tag 可用作指定网址的 HTTP 标头响应中的一个元素。任何可在robots meta 标记中使用的规则也可以指定为 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 标头、用户代理名称和指定的值都不区分大小写。

有效的索引编制规则和内容显示规则

您可以使用以下规则(也以机器可读格式提供),通过robots meta 标记和 X-Robots-Tag 控制摘要的索引编制和内容显示。每个值代表一个特定的规则。您可以将多个规则合并为一个逗号分隔列表或使用多个 meta 标记。这些规则不区分大小写。

规则

all

对索引编制或内容显示无任何限制。该规则为默认值,因此明确列出时并无任何效果。

noindex

不在搜索结果中显示此网页、媒体或资源。如果您未指定该规则,则此网页、媒体或资源可能会编入索引并显示在搜索结果中。

若要从 Google 中移除信息,请按照我们的分步指南操作。

nofollow

不追踪该网页上的链接。如果您未指定此规则,Google 可能会使用该网页上的链接来发现链接到的网页。详细了解 nofollow

none

等同于 noindex, nofollow

noarchive

不在搜索结果中显示缓存链接。如果您未指定此规则,Google 可能会生成缓存网页,并且用户可能会通过搜索结果访问该网页。

nositelinkssearchbox

不在搜索结果中显示该网页的站点链接搜索框。如果您未指定此规则,Google 可能会在搜索结果中生成一个供您网站专用的搜索框,以及其他直接指向您网站的链接。

nosnippet

不在搜索结果中显示该网页的文本摘要或视频预览。如果有静态图片缩略图,而且它能够实现更好的用户体验,那么系统仍可能显示这类缩略图。这适用于所有形式的搜索结果,包括 Google 网页搜索、Google 图片、Google 探索和 AI 概览,并且还会阻止将内容用作 AI 概览的直接输入。

如果您未指定此规则,Google 可能会根据在该网页上找到的信息生成文本片段和视频预览。

若要阻止内容的某些部分显示在搜索结果摘要中,请使用 data-nosnippet HTML 属性

indexifembedded

如果网页内容通过 iframes 或类似 HTML 标记嵌入到其他网页中,那么 Google 可以将该网页内容编入索引(尽管存在 noindex 规则)。

indexifembedded 仅在与 noindex 一起出现时才有效。

max-snippet: [number]

最多只能使用 [number] 个字符作为此搜索结果的文字摘要。(请注意,网址可能会在搜索结果页中显示为多个搜索结果)。这并不会影响图片或视频预览。这适用于所有形式的搜索结果(例如 Google 网页搜索、Google 图片、Google 探索、Google 助理、AI 概览),并且还会限制可将多少内容用作 AI 概览的直接输入。但是,如果发布商已单独授予内容使用权限,则此限制不适用。例如,如果发布商以页内结构化数据的形式提供内容,或者与 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: [setting]

设置此网页的图片预览在搜索结果中的尺寸上限。

如果您未指定 max-image-preview 规则,Google 可能会显示默认尺寸的图片预览。

接受的 [setting] 值:

  • none:不会显示图片预览。
  • standard:可能会显示默认图片预览。
  • large:可能会显示较大的图片预览,最高达到视口宽度。

这适用于所有形式的搜索结果,例如 Google 网页搜索、Google 图片、Google 探索和 Google 助理。但是,如果发布商已单独授予内容使用权限,则此限制不适用。例如,如果发布商以页内结构化数据的形式提供内容(例如 AMP 版本和规范版本的文章),或与 Google 签订了许可协议,那么此设置不会妨碍那些更具体的允许用途。

如果您不希望 Google 搜索或 Google 探索在显示其文章的 AMP 网页和规范版本时使用较大的缩略图,请将 max-image-preview 的值指定为 standardnone

示例:

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

max-video-preview: [number]

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

如果您未指定 max-video-preview 规则,Google 可能会在搜索结果中显示视频摘要,并且由 Google 决定预览内容的长短。

特殊值:

  • 0:根据 max-image-preview 设置,最多只能使用一张静态图片。
  • -1:没有限制。

这适用于所有形式的搜索结果,例如 Google 网页搜索、Google 图片、Google 视频、Google 探索和 Google 助理。如果没有指定可解析的 [number],此规则会被忽略。

示例:

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

notranslate

不在搜索结果中提供该网页的译文。如果您未指定此规则,那么对于语言不是搜索查询所用语言的搜索结果,Google 可能会提供搜索结果标题链接和摘要的翻译版本。如果用户点击翻译后的标题链接,那么用户与该网页之间的进一步互动都是通过谷歌翻译进行的,该工具会自动翻译用户后续访问的链接。

noimageindex

不将该网页上的图片编入索引。如果您未指定此值,系统可能会将网页上的图片编入索引并显示在搜索结果中。

unavailable_after: [date/time]

在指定日期/时间过后,不在搜索结果中显示该网页。日期/时间必须以广泛采用的格式指定,包括但不限于 RFC 822RFC 850ISO 8601。 如果未指定有效的日期/时间,该规则将被忽略。默认情况下,内容没有失效日期。

如果您未指定此规则,该网页可能会无限期地显示在搜索结果中。Googlebot 将在指定日期和时间之后大幅降低网址的抓取速度。

示例:

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

如何处理合并的索引编制规则和内容显示规则

您可以将多个以英文逗号分隔的robots meta 标记规则合并起来或使用多个 meta 标记,创建一条包含多个规则的命令。下面是一个robots meta 标记示例,它会指示网页抓取工具不要将该网页编入索引,也不要抓取该网页上的任何链接:

逗号分隔列表

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

多个 meta 标记

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

下面的示例会将文本摘要长度限制为 20 个字符,并允许大图片预览:

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

如果您指定了多个抓取工具,并且不同的工具对应不同的规则,那么搜索引擎会综合使用所有的否定规则。例如:

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

Googlebot 在抓取包含这些 meta 标记的网页时会将其视为拥有 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="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 -->

<p>This text can be shown in a snippet.</p>
<div data-nosnippet>
  <p>However, this is not in snippet.</p>
  <ul>
    <li>Stuff not in snippet</li>
    <li>More stuff not in snippet</li>
  </ul>
</div>

Google 通常会渲染网页,以便将它编入索引,但无法保证一定会渲染。 因此,在渲染之前和之后都可能会提取 data-nosnippet。为避免渲染的不确定性,请不要通过 JavaScript 添加或移除现有节点的 data-nosnippet 属性。通过 JavaScript 添加 DOM 元素时,请在最初向网页的 DOM 添加该元素时根据需要包含 data-nosnippet 属性。如果使用了自定义元素,并且您需要使用 data-nosnippet,请通过 divspansection 元素封装或渲染它们。

使用结构化数据

Robots meta 标记会控制 Google 自动从网页中提取并显示为搜索结果的内容量。但是,很多发布商也使用 schema.org 结构化数据为搜索呈现提供具体信息。Robots meta 标记限制不会影响该结构化数据的使用,但 article.description 和为其他创意作品指定的结构化数据的 description 值除外。如需根据这些 description 值指定预览的最大长度,请使用 max-snippet 规则。例如,即使文本预览会受到限制,网页上的 recipe 结构化数据也可以包含在食谱轮播界面中。您可以使用 max-snippet 限制文本预览的长度,但是在使用结构化数据提供信息以获得富媒体搜索结果时,系统不会应用此robots meta 标记。

如需管理在网页中使用结构化数据的方式,请修改结构化数据类型和值本身,添加或移除信息,以便只提供您想提供的数据。另外还请注意,在 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 中使用robots meta 标记的非 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 标头:

Apache

# the htaccess file must be placed in the directory of the matched file.
<Files "unicorn.pdf">
  Header set X-Robots-Tag "noindex, nofollow"
</Files>

NGINX

location = /secrets/unicorn.pdf {
  add_header X-Robots-Tag "noindex, nofollow";
}

合并使用 robots.txt 规则与索引编制及内容显示规则

只有当网址被抓取时,robots meta 标记和 X-Robots-Tag HTTP 标头才会被抓取工具发现。如果您通过 robots.txt 文件禁止抓取某一网页,那么抓取工具就不会找到任何关于索引编制/内容显示规则的信息,因此会忽略这些信息。如果必须遵循索引编制/内容显示规则,那么您不能禁止抓取工具抓取包含这些规则的网址。