Cодержимое Турбо-страницы не соответствует оригинальной версии

Cодержимое Турбо-страницы не соответствует оригинальной версии

Cодержимое Турбо-страницы не соответствует оригинальной версии (в содержимом тега CDATA найдены закодированные символы). Такое сообщение возникает у многих пользователей, которые настроили Яндекс Турбо-страницы на своем сайте. Давайте разберемся как исправить данную ошибку.

Как сделать вывод Турбо-страниц

Что такое Яндекс Турбо-страницы я описывал в данной статье — «Яндекс» запустил в поиске «турбо-страницы» — аналог Google AMP.

Для генерации Турбо-страниц в WordPress есть несколько плагинов. Свой выбор я сделал в пользу Yandex.News Feed by Teplitsa. Данный плагин легко настраивается, поэтому смысла в его описании нет.

Причина ошибки «Cодержимое Турбо-страницы не соответствует оригинальной версии»

Проанализировав предупреждения «Cодержимое Турбо-страницы не соответствует оригинальной версии» в Yandex.Вебмастер с помощью раздела Отладка Турбо-страниц, можно легко определить, что валидатору не нравятся экранированные теги. Вероятнее всего Яндекс не хочет, чтобы в ленте экранировали html теги. Поэтому данное предупреждение возникает на всех страницах, где в тексте есть исходный код.

Cодержимое Турбо-страницы не соответствует оригинальной версии

На моем сайте исходники и куски кода встречаются часто, например, в статье  «Добавить Яндекс Карты на сайт для построения маршрута».

Избавляемся от «Cодержимое Турбо-страницы не соответствует оригинальной версии»

Мы выяснили в чем проблема, теперь давайте ее решать. Для этого нам необходимо отредактировать плагин, который у нас генерирует Турбо-страницы.

Дальше описываю способ решения для плагина Yandex.News Feed by Teplitsa.

В WordPress переходим в Плагины — Редактор. Выбираем наш плагин и в редакторе открываем файл yandexnews-feed-by-teplitsa/inc/tst-yandex-feed-core.php.

Ищем строчку:

$turbo_content = preg_replace('/[\x00-\x1F\x7F]/u', '', $turbo_content);

И вставляем после нее следующий код:

$turbo_content = preg_replace('/«/', '"', $turbo_content);
$turbo_content = preg_replace('/»/', '"', $turbo_content);
$turbo_content = preg_replace('/”/', '"', $turbo_content);
$turbo_content = preg_replace('/'/', '\'', $turbo_content);
$turbo_content = preg_replace('/ /', ' ', $turbo_content);
$turbo_content = preg_replace('/ /', ' ', $turbo_content);
$turbo_content = preg_replace('/—/', '-', $turbo_content);
$turbo_content = preg_replace('/–/', '–', $turbo_content);
$turbo_content = preg_replace('/&/', '&', $turbo_content);
$turbo_content = preg_replace('/</', '<', $turbo_content);
$turbo_content = preg_replace('/>/', '>', $turbo_content);

Сохраняем изменения.

Проверяем новую генерацию в Отладчике Турбо-страниц и радуемся результату.

Надо быть внимательным, потому что теперь html теги не конвертируются и появляется опасность XSS уязвимостей.
Отладка Турбо-страниц

Хочу заметить, что после очередного обновления плагина придется делать данные изменения заново, если конечно разработчик не внесет решение данной проблемы в обновление плагина.

Можно не исправлять данные предупреждения, т.к. страницы все равно попадают в индекс Яндекса. Для проверки Турбо-страницы можно воспользоваться ссылкой вида: https://yandex.ru/turbo?text=, где — адрес вашей страницы.

Например, https://yandex.ru/turbo?text=https://pogrommist.ru/dobavit-yandex-maps-na-site-dlja-postroenija-marshruta/