Спецификации метатега robots, атрибута data-nosnippet и HTTP-заголовка X-Robots-Tag

В этом документе рассказывается о том, как управлять показом контента в результатах поиска Google, задавая настройки на уровне страницы и текста. Настройки на уровне страницы задаются с помощью HTTP-заголовка или метатега HTML. Для настроек на уровне текста в HTML-элементы в коде страницы добавляется атрибут data-nosnippet.

Как использовать метатег robots

Метатег robots позволяет задавать на уровне страницы детальные настройки, которые определяют, как эта страница будет индексироваться и показываться в результатах поиска Google. Метатег robots следует размещать в разделе <head> страницы. Пример:

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

В этом примере метатег robots запрещает поисковым системам показывать страницу в результатах поиска. Заданное для атрибута name значение robots указывает, что директива предназначена для всех поисковых роботов. Если вы хотите закрыть доступ только одному из них, вместо robots укажите в значении атрибута name название нужного робота. Отдельные поисковые роботы также называются агентами пользователя (поисковый робот использует агент пользователя для отправки запроса страницы). Агент пользователя стандартного поискового робота Google называется Googlebot. Чтобы запретить сканирование страницы только роботу Googlebot, измените тег, как указано в примере ниже:

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

Такой тег сообщает Google, что эту страницу не следует показывать в результатах поиска. Атрибуты name и content можно указывать без учета регистра.

Для разных целей поисковые системы могут использовать разных роботов. Полный список роботов Google можно найти здесь. Например, если вам нужно, чтобы контент со страницы был представлен в результатах веб-поиска Google, но не в Google Новостях, используйте следующий метатег:

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

Если нужно задать неодинаковые настройки для разных поисковых роботов, используйте несколько метатегов robots:

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

Чтобы запретить индексирование файлов формата, отличного от HTML, например документов PDF, видео или изображений, используйте заголовок ответа X-Robots-Tag.

Как использовать HTTP-заголовок X-Robots-Tag

Заголовок X-Robots-Tag можно указывать в HTTP-ответе, отправляемом с определенного URL. В заголовках X-Robots-Tag поддерживаются те же директивы, что и в метатегах robots. Вот пример 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-ответа, где noarchiveX-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 может указывать название агента пользователя. Например, чтобы ваша страница появлялась в результатах поиска лишь некоторых поисковых систем, используйте следующий набор HTTP-заголовков X-Robots-Tag:

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 и X-Robots-Tag. Фрагмент в результатах поиска – это короткий текст, который помогает пользователям понять, соответствует ли найденный контент их запросу. В следующей таблице перечислены все директивы, которые выполняют роботы Google, а также их значения. Каждое значение соответствует отдельной директиве. Директивы можно объединять, перечисляя через запятую. Они указываются без учета регистра.

Директивы

all

Нет ограничений на индексирование и показ контента. Эта директива используется по умолчанию и не влияет на работу поисковых роботов, даже если она указана в коде.

noindex

Не показывать страницу, медиаконтент или ресурс в результатах поиска. Если не указать эту директиву, страница, медиаконтент или ресурс будет проиндексирован и сможет показываться в результатах поиска.

nofollow

Не выполнять переход по ссылкам на странице. Если не указать эту директиву, роботы Google могут использовать ссылки на странице для поиска целевых страниц. Подробнее о директиве nofollow

none

Является эквивалентом noindex, nofollow.

noarchive

Директива запрещает показывать ссылку на кеш в результатах поиска. Если не указать эту директиву, роботы Google могут создать кешированную страницу, доступную пользователям через результаты поиска.

nosnippet

Не показывать в результатах поиска текстовый фрагмент или видео. Статические уменьшенные изображения (если имеются) могут по-прежнему отображаться, если они будут более удобными для пользователя при просмотре. Это условие выполняется для всех типов результатов поиска (веб-поиск Google, Google Картинки, рекомендации).

Если не указать эту директиву, роботы Google могут создать фрагмент текста и видео на основе информации со страницы.

max-snippet: [number]

Ограничение на количество символов в текстовом фрагменте (не более [number]), который показывается в результатах поиска. (Учтите, что один и тот же URL может появляться на странице результатов поиска несколько раз). Не распространяется на предварительный просмотр изображений и видео. Распространяется на все виды результатов поиска (веб-поиск Google, Google Картинки, рекомендации и данные, предоставляемые Ассистентом). Тем не менее ограничение не применяется в тех случаях, когда издатель предоставил отдельное разрешение на использование контента, например добавил структурированные данные или заключил лицензионное соглашение с компанией Google. Тогда эта настройка не отменяет подобные дополнительные разрешения. Если этой директиве присвоить некорректное числовое значение, она будет игнорироваться.

Если же не указать ее, 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, будет возможен предварительный просмотр изображения размером, заданным по умолчанию.

Допустимые значения для элемента [setting]:

  • none – нет изображения для предварительного просмотра.
  • standard – может быть показано изображение для предварительного просмотра по умолчанию.
  • large – может быть показано более крупное изображение, вплоть до максимальной ширины области просмотра.

Это распространяется на все виды результатов поиска (веб-поиск Google, Google Картинки, рекомендации и данные, предоставляемые Ассистентом). Тем не менее ограничение не применяется в тех случаях, когда издатель предоставил отдельное разрешение на использование контента, например добавил структурированные данные или заключил лицензионное соглашение с компанией Google. В частности, структурированные данные могут определять каноническую и AMP-версию статьи.

Если вы не хотите, чтобы ваши канонические страницы и их AMP-версии показывались в Google Поиске и рекомендациях с более крупными изображениями, укажите в директиве max-image-preview значение standard или none.

Пример:


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

max-video-preview: [number]

Эта директива задает для фрагмента видео со страницы ограничение по длительности в секундах при показе в результатах поиска (не более [number]).

Если не указать директиву max-video-preview, в результатах поиска сможет показываться фрагмент видео. В этом случае определять возможную продолжительность предварительного просмотра будет Google.

Специальные значения:

  • 0 – может использоваться статическое изображение, но его размер не должен превышать значение, заданное настройкой max-image-preview.
  • -1 – ограничения отсутствуют.

Директива распространяется на все виды результатов поиска (веб-поиск Google, Google Картинки, рекомендации, поиск по видео и данные, предоставляемые Ассистентом). Если этой директиве присвоить некорректное числовое значение, она будет игнорироваться.

Пример


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

notranslate

Эта директива запрещает предлагать в результатах поиска перевод страницы. Если не указать эту директиву, Google может показывать перевод ссылки-заголовка и фрагмента страницы в результатах с контентом, язык которого отличается от языка поискового запроса. Когда пользователь нажимает на переведенную ссылку-заголовок и переходит на страницу, все дальнейшие действия на ней совершаются через Google Переводчик, который автоматически выполняет перевод каждой страницы при переходе на нее.

noimageindex

Эта директива запрещает индексировать изображения, размещенные на странице. Если не указать это значение, изображения на странице будут проиндексированы и смогут показываться в результатах поиска.

unavailable_after: [date/time]

Эта директива запрещает показывать страницу в результатах поиска после даты и времени, указанных в одном из основных форматов, таких как RFC 822, RFC 850, ISO 8601 и др. Эта директива игнорируется, если не указано допустимое значение даты и времени. По умолчанию у контента нет срока действия.

Если не указать эту директиву, страница может показываться в результатах поиска неограниченное время.

Пример:


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

Обработка комбинированных директив индексирования и показа контента

В одном метатеге robots можно создать инструкцию из нескольких директив, перечисленных через запятую. Ниже приведен пример метатега robots, который запрещает поисковым роботам индексировать страницу и сканировать ссылки на ней:

<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.

Как использовать HTML-атрибут data-nosnippet

Фрагменты текста на HTML-странице можно специально пометить, чтобы они не показывались в результатах поиска. Для этого служит атрибут data-nosnippet HTML-элементов span, div и section. Атрибут data-nosnippet является логическим и может указываться без значения. Код должен отвечать стандартам 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 в существующие узлы или для его удаления из них. Если вы добавляете элементы в структуру DOM при помощи JavaScript, указывайте атрибут data-nosnippet в момент создания этих элементов. Если вы хотите применить атрибут data-nosnippet к нестандартным элементам, размещайте их внутри тегов div, span или section.

Использование структурированных данных

Метатеги robots определяют, какое количество контента Google может автоматически извлекать с веб-страниц и показывать в результатах поиска. Однако многие издатели также применяют структурированные данные schema.org, чтобы показывать в результатах поиска нужную им информацию. Заданные в метатегах robots ограничения не распространяются на структурированные данные, кроме значений article.description и description, которые указываются для творческих работ. Чтобы задать максимальную длину текстового фрагмента в результатах поиска с учетом этих значений description, используйте метатег robots с директивой max-snippet. К примеру, если на странице есть структурированные данные для рецептов (recipe), определенный ими контент может показываться в карусели рецептов независимо от ограничения длины текстового фрагмента. Длину текстового фрагмента можно ограничить при помощи max-snippet, однако эта директива метатега robots не действует, когда информация предоставляется с применением структурированных данных для расширенных результатов.

Вы можете редактировать типы структурированных данных и их значения на веб-страницах. Добавляйте или удаляйте информацию, чтобы роботу Google были доступны только нужные сведения. Обратите внимание, что структурированные данные могут использоваться в Поиске, даже если они объявлены внутри элемента с атрибутом data-nosnippet.

Практическая реализация заголовка X-Robots-Tag

Заголовок X-Robots-Tag можно добавить в HTTP-ответы с помощью файлов конфигурации в серверном ПО сайта. Например, на серверах Apache такие настройки хранятся в файлах .htaccess и httpd.conf. Преимущество использования заголовка X-Robots-Tag в HTTP-ответах состоит в том, что с его помощью можно задать директивы сканирования на уровне всего сайта, а поддержка регулярных выражений обеспечивает дополнительную гибкость.

Например, чтобы добавить заголовок X-Robots-Tag с директивой noindex, nofollow в HTTP-ответ для PDF-файлов со всего сайта, включите небольшой фрагмент кода в корневой файл .HTACCESS/HTTPD.CONF (Apache) или CONF (NGINX).

Apache

<Files ~ "\.pdf$">
  Header set X-Robots-Tag "noindex, nofollow"
</Files>
location ~* \.pdf$ {
  add_header X-Robots-Tag "noindex, nofollow";
}

NGINX

Заголовки X-Robots-Tag можно использовать для тех файлов, для которых HTML-метатеги robots недоступны, например для изображений. В приведенном ниже примере директива noindex X-Robots-Tag добавляется для файлов изображений (PNG, JPEG, JPG, GIF) на всём сайте:

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 и HTTP-заголовков X-Robots-Tag происходит при сканировании URL. Если сканирование страницы запрещено файлом robots.txt, то директивы, касающиеся индексирования или показа контента, будут проигнорированы. Чтобы гарантировать выполнение директив, не следует запрещать сканирование URL, для которых они заданы.