Блог Яндекса для вебмастеров

Изменения в индексировании AJAX-сайтов

AJAX — это принцип динамической вёрстки сайта, благодаря которому можно взаимодействовать с сервером без перезагрузки страницы, так как обновление данных происходит в рамках одного скрипта в том же пространстве. Например, пользователь указывает свои данные в форме обратной связи и нажимает кнопку «Отправить» — и вместо переадресации остаётся на той же странице, но с новыми, добавленными по алгоритму данными.  

Как раньше индексировался AJAX 

Для индексирования динамического AJAX-сайта каждой его странице необходима HTML-версия. Раньше поисковой системе можно было сообщить о её существовании с помощью параметра #! в ссылке. Роботы Яндекса определяли соответствие между #! и элементом «?_escaped_fragment_=», а затем индексировали страницу в  HTML (например, страница http://www.example.com/#!blog индексировалась как http://www.example.com/?_escaped_fragment_=blog).  

Изменения в обходе роботами AJAX 

Теперь вместо проверки HTML-версий страниц роботы будут исполнять скрипты на AJAX-сайтах. Поэтому спешим рассказать вам о нескольких важных технических деталях.  

Страницы с параметром #! больше не поддерживаются. Чтобы контент сайта не пропал из результатов поисковой выдачи, необходимо: 

  • Изменить в карте сайта структуру ссылок так, чтобы в их содержании не было символа # 
  • Настроить на важных для состояния сайта страницах редирект 301 на  новые с  корректными адресами (а  именно — без параметра #!). При этом переадресацию нужно настроить как со  страниц по  адресам вида http://www.example.com/?_escaped_fragment_=blog, так и со страниц http://www.example.com/#!blog

Страницы с тегом meta name=«fragment» content=«!» также скоро перестанут поддерживаться. Но никакие дополнительные настройки для спасения контента в этом случае не нужны: метатег будет проигнорирован, а оригинальная страница — проиндексирована с исполнением JavaScript.  

Рекомендации 

Яндекс перестаёт поддерживать индексацию страниц с такими параметрами в связи с тем, что технология рендеринга более удобна и эффективна для передачи поисковому роботу контента сайта в полном объёме.

В разделе Рендеринг страниц JavaScript вы сможете проверить, как будет проиндексирован ваш сайт при исполнении JS и сравнить с исходным вариантом обхода роботами. А затем выбрать соответствующие настройки.  

Вместо фрагментов в адресах ссылок используйте History API. Он позволяет управлять историей браузера в пределах сессии — посещёнными страницами в пределах вкладки или фрейма, который загружен внутри страницы. Подробнее об этом можно прочитать в Справке.  

P. S. Подписывайтесь на наши каналы
Блог Яндекса для Вебмастеров
Канал Яндекса о продвижении сайтов на YouTube
Канал для владельцев сайтов в Яндекс.Дзен

15 комментариев
Ребяты, наконец-то!
Спасибо, нововведение пригодится.
Чтобы контент сайта не пропал из результатов поисковой выдачи, необходимо изменить в карте сайта структуру ссылок так, чтобы в их содержании не было символа #


--- А если оставить символ #, получается, робот выкинет эти страницы из поиска или не факт? Опять же, какую тогда указать ссылку в sitemap? Была страница реальная site.ru/#!page, а теперь указывать site.ru/page ??? Но такой страницы нет, и выходит ошибка 404.
Обновлено 9 августа 2022, 14:36
platon
Сотрудник Яндекса9 августа 2022, 17:42
Руслан,
ссылки с символом # в базу робота будут попадать без этого символа, обрезаясь до него. Если страницы по таким адресам будут доступны, то смогут индексироваться в обычном режиме. Редиректы же стоит настраивать на страницы по правильным адресам, которые должны быть доступны для участия в поиске. Такие же ссылки и необходимо указывать в файлах sitemap.
platon,
то есть если у меня страница site.ru/#!E09E9E, то робот прочитает как site.ru/!E09E9E, и мне нужно сделать редирект с site.ru/!E09E9E на site.ru/#!E09E9E, верно?
platon
Сотрудник Яндекса10 августа 2022, 06:13
Руслан,
для ссылки вида http://site.ru/#!E09E9E нужно настроить редирект как с версии http://site.ru/#!E09E9E , так и с http://site.ru/?_escaped_fragment_=E09E9E на ту страницу, которая должна индексироваться. В файлах sitemap при этом указать стоит ссылки-цели подобных редиректов, то есть, именно те ссылки, которые должны участвовать в поиске.
platon,
должна участвовать в поиске именно site.ru/#!E09E9E. как данном случае быть? вы можете привести конкретный пример?
Обновлено 10 августа 2022, 09:51
platon
Сотрудник Яндекса10 августа 2022, 15:58
Руслан,
страницы по адресам вида site.ru/#!E09E9E не смогут участвовать в поиске, вам необходимо использовать адрес без параметров #!, настроить на него редирект, чтобы страница участвовала в поиске именно по такому адресу. 
Чтобы мы могли помочь вам на конкретных примерах с вашим сайтом, напишите, пожалуйста, через форму на странице https://yandex.ru/support/webmaster/robot-workings/ajax-indexing.html.
Обновлено 10 августа 2022, 15:58
platon,
подождите секунду: страница site.ru/E09E9E это уже не AJAX, а отдельный каталог (или документ). или я что-то не понимаю. тем более гугл требует формат #! для ajax-страниц. получаются какие-то противоречия...
в таком случае теряется весь смысл AJAX. Ведь site.ru/blog это уже не динамические страницы - и содержимое каталога может конфликтовать с ajax-страницей в данном случае.
platon
Сотрудник Яндекса10 августа 2022, 22:37
Руслан,
как сказано в статье, теперь наши роботы будет исполнять скрипты вместо проверки HTML-версий, поэтому мы и рекомендуем настраивать редиректы на страницы по "чистым" адресам для сохранения показателей.
Вау


не прошло и 15 лет!
seoforfood,
да вроде хоть гугл давно парсит ajax, но по факту криво работало.
Александр Цымбал
15 августа 2022, 11:05
Хорошая новость! 
смотрел недавно статистику тильдовского сайта - скорость загрузки в метрике 1,2 - 1,3 сек - в то же время картинки на сайте абсолютно все весят в районе 1 мб. :)) даже в шапке с учетом ленивой загрузки... смотрел исполнение на vue - там та же история в первую загрузку прилетает 4 мб только скриптов не говоря о куче картинок, там вместо PWA замутили SPA - так там та же история типа загрузка 1,2 сек... понятно что дурят UI/UX и выкатывают в прод... но яндексу стоит обратить внимание что фиксится не корректное время загрузки...