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

О чем этот документ

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

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

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

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

Метатег в примере выше запрещает поисковым системам показывать страницу в результатах поиска. Заданное для атрибута name значение (robots) указывает, что директива предназначена для всех поисковых роботов. Если вы хотите закрыть доступ только одному из них, укажите вместо robots другое значение атрибута name, а именно название нужного робота. Отдельные поисковые роботы также называются агентами пользователя (поисковый робот использует агент пользователя для запроса страницы). Агент пользователя стандартного поискового робота Google называется 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">

Как использовать 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-ответа, где заголовок X-Robots-Tag с директивой noarchive объединен с заголовком X-Robots-Tag, которому назначена директива unavailable_after.

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
Директива запрещает выполнять переход по ссылкам на странице.
none
Директива эквивалентна элементу noindex, nofollow.
noarchive
Директива запрещает показывать ссылку на кеш в результатах поиска.
nosnippet
Директива запрещает демонстрировать в результатах поиска фрагмент текста или видеоролика. Она не распространяется на статические уменьшенные изображения, если они будут более удобными для пользователя при просмотре. Это условие выполняется для всех типов результатов поиска (веб-поиск Google, Google Картинки, рекомендации).
max-snippet:[number]

Эта директива задает для текстового фрагмента ограничение на количество символов (не более [number]). Учтите, что URL может появляться на странице результатов поиска несколько раз. Действие директивы не распространяется на изображения и видео, но распространяется на остальные виды результатов (веб-поиск 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. В частности, структурированные данные могут определять каноническую и AMP-версию статьи.

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

    Пример:

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

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

    Другие допустимые значения:

  • 0 – может использоваться статическое выражение, но его размер не должен превышать значение, заданное настройкой max-image-preview.
  • -1 – ограничения отсутствуют.
  • Директива распространяется на все виды результатов поиска (веб-поиск Google, Google Картинки, рекомендации, поиск по видео и данные, предоставляемые Ассистентом). Эта директива игнорируется, если не указано допустимое значение [number].

    Пример:

    <meta name="robots" content="max-video-preview:-1">
    notranslate
    Эта директива запрещает предлагать в результатах поиска перевод страницы.
    noimageindex
    Эта директива запрещает индексировать изображения на странице.
    unavailable_after: [date/time]

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

    Пример:

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

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

    Можно создать инструкцию, содержащую несколько директив, перечисленных через запятую в одном метатеге 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

    Атрибут data-nosnippet будет применяться с конца октября 2019 г.

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

    Что нужно учитывать при использовании структурированных данных

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

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

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

    С помощью файлов конфигурации в серверном ПО сайта вы можете добавить в HTTP-ответы заголовок X-Robots-Tag. Например, на серверах 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>
    

    NGINX:

    location ~* \.pdf$ {
      add_header X-Robots-Tag "noindex, nofollow";
    }
    

    Заголовки 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";
    }
    

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

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