Индексирование страниц с JavaScriptβ

С помощью Вебмастера вы можете управлять индексированием страниц сайта, на которых контент отображается через JavaScript — указать, следует ли роботу выполнять JavaScript на страницах при обходе вашего сайта. Это может быть полезно, если на сайте не реализован SSR (Server-Side Rendering) или пререндеринг. Кроме того, вы можете проверить состояние страниц в поиске.

Примечание. При выполнении JavaScript-кода робот может создавать дополнительную нагрузку на ваш сервер.
  1. Управление индексированием
  2. Расширенные настройки рендеринга
  3. Проверка состояния страницы

Управление индексированием

  1. Перейдите в Вебмастер.
  2. Перейдите на страницу Индексирование → Рендеринг страниц JavaScriptβ.
  3. Выберите одну из опций. По умолчанию включена опция На усмотрение робота. Это значит, что робот самостоятельно определит, выполнять ли JavaScript-код на страницах сайта. Например, для принятия решения он может оценить качество и полноту контента на странице с JavaScript и без и загрузить ту, которая может оказаться более полезной для посетителя сайта.
    Совет. Запретите рендеринг, если на сайте реализован SSR (Server-Side Rendering) или пререндеринг.

Расширенные настройки рендеринга

Если на вашем сайте контент загружается с задержкой, вы можете сообщить об этом Яндексу с помощью специального кода JavaScript.

На страницах сайта, где контент загружается с задержкой, создайте объект window.YandexRotorSetting таким образом, чтобы он обрабатывался до события DomContentLoaded. Внутри этого объекта можно указать параметры, на которые будет реагировать робот Яндекса при обработке страницы. Параметры приведены в таблице ниже.

Пример кода:

<script>
    window.YandexRotorSettings = {
        WaiterEnabled: true;
        FailOnTimeout: false;
        NoJsRedirectsToMain:true
    }
</script>
Параметр Тип Описание
WaiterEnabled Boolean
Возможные значения:
  • true;
  • false.
При значении true возможна проверка состояний:
  • IsLoaded;
  • IsError.

Подробное описание состояний ниже.

IsLoaded Boolean
Возможные значения:
  • true — при условии выполнения события DomContentLoaded контент считается загруженным, содержимое страницы попадает в базу робота Яндекса;
  • false.
IsError Boolean
Возможные значения:
  • true — загрузка контента считается ошибочной, содержимое страницы не обрабатывается роботом Яндекса;
  • false.

FailOnTimeout Boolean
Возможные значения:
  • true — по истечение тайм-аута страница не попадет в базу робота;
  • false — в базу попадет часть контента, которую робот успеет загрузить до истечения тайм-аута.

Тайм-аут можно задать в пользовательских настройках при WaiterEnabled: true.

NoJsRedirectsToMain Boolean
Возможные значения:
  • true — робот Яндекса проигнорирует редирект на главную страницу сайта;
  • false.

Используйте параметр, если на вашем сайте реализован вызов window.history.back(), например, при использовании History API.

Робот Яндекса воспринимает вызов window.history.back() как переход на главную страницу без изменения содержимого. В результате на главную страницу может попадать контент с других страниц.
Как определить подмену контента

Вы можете заметить, что в результатах поиска описание главной страницы меняется на описание внутренних или атрибут rel="canonical" меняется на атрибут внутренних страниц.

Примеры реализации JavaScript-кода
Дождаться загрузки элемента с нужным CSS-селектором
<!-- Хотим дождаться элемента с классом '.observable-class'.
Он будет создан через 10 секунд --->

<!-- Этот код должен быть вставлен прямо в html --->
<script>
    window.YandexRotorSettings = {
        WaiterEnabled: true
    }
</script>

<!-- Этот код можно загружать через <script src="...">-->
<script>
    var intervalId = setInterval(function() {
        if (document.querySelectorAll('.observable-class').length > 0) {
            window.YandexRotorSettings.IsLoaded = true;
            clearInterval(intervalId);
        }
    }, 1000);
</script>

<!-- Скрипт для примера. Создаем элемент с нужным классом -->
<script>
    setTimeout(function() {
        var div = document.createElement('div');
        div.classList.add('observable-class');
        div.innerText = "These are the droids you're looking for.";
        document.body.appendChild(div);
    }, 10000);
</script>
Подождать 5 секунд после загрузки
<!-- Рекомендуем полагаться на ожидание конкретных элементов.
Загрузка ресурсов роботом может занимать неопределенное время --->

<!-- Этот код должен быть вставлен прямо в html --->
<script>
    window.YandexRotorSettings = {
        WaiterEnabled: true
    }
</script>

<!-- Этот код можно загружать через <script src="...">-->
<script>
    setTimeout(function() {
        window.YandexRotorSettings.IsLoaded = true;
    }, 5000);
</script>

Проверка состояния страницы

С помощью инструмента вы можете узнать:
  • Какой код ответа получает робот от страницы. Подробно см. в разделе Справочник по кодам статуса HTTP. Если код ответа отличается от 200 OK, страница может быть исключена из поиска.
  • Как выглядит контент страницы для робота. Это помогает определить, насколько содержимое страницы доступно для робота.
  • Статус страницы (например, участвует ли в поиске или исключена).
  • Насколько адаптирована страница под мобильные устройства.
Чтобы проверить состояние страниц с JavaScript в поиске, перейдите в Вебмастер на страницу:

В поле укажите URL страницы сайта, которую хотите проверить и тип устройства.

При проверке вы можете выбрать робота, чтобы узнать, имеет ли он доступ к странице. В списке приведены основные роботы, которые посещают большинство сайтов. Когда вы выберете робота, под полем отобразится его User-agent. Подробно см. в разделе Роботы Яндекса в логах сервера.

Также вы можете проверить ответ, если ваш сервер отправляет HTTP-статус с кодом 304 Not Modified в ответ на заголовок If-Modified-Since. Для этого в поле If-Modified-Since укажите дату и время:
  • Последнего обновления проверяемой страницы. Тогда полученный ответ должен содержать HTTP-статус с кодом 200 OK.
  • Другую дату — должен вернуться ответ с кодом 304 Not Modified.

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