Как сделать SPA-сайты SEO-Friendly? > NetPeak - Независимость и осознанность
NetPeak Biz Tech    


Как сделать SPA-сайты SEO-Friendly?

Как сделать SPA-сайты SEO-Friendly?

< >

Сайт на Ajax: как отдельным страницам попасть в выдачу В последнее время в работе специалистов Netpeak Agency много сайтов, использующих AJAX-технологии, а также сайтов написанных на JavaScript фреймворках. Без дополнительной оптимизации они не готовы к продвижению в поисковых системах. Поэтому я детально опишу, что такое SPA-сайты, как они работают, и как можно сделать Single Page Application SEO-Friendly.

Статья будет полезна SEO-специалистам и владельцам сайтов, которые хотят перейти на Single Page Application, но не решаются, потому что SPA могут «поссориться» с поисковыми системами.

Что такое SPA

SPA (Single Page Application) — одностраничное JavaScript приложение, которое запускается и работает в браузере. В отличии от «традиционного» сайта, архитектура на SPA-сайтах построена так, что рендеринг страницы полностью происходит на стороне клиента, а не на стороне сервера.

В браузере пользователя запускается JavaScript-приложение, а все необходимое содержимое страниц динамически загружается с помощью AJAX. Навигация по сайту происходит без перезагрузки страниц. За счет такой архитектуры, SPA-сайты работают быстрее, чем «традиционные» сайты.

Рассмотрим детальнее, как происходит загрузка и рендеринг содержимого на SPA-сайтах:

  1. Пользователь запрашивает HTML содержимое сайта.
  2. В ответ приходит JavaScript-приложение.
  3. Приложение определяет, на какой странице находится пользователь, и какое содержимое ему нужно отобразить.
  4. С помощью AJAX пользователь получает необходимый контент: CSS, JS, HTML и текстовый контент.
  5. JavaScript-приложение обpaбатывает полученные данные и отображает их в браузере.
  6. При навигации по сайту обновляется не вся страница, а только необходимое содержимое.

Плюсы SPA-сайтов:

  • высокая скорость работы;
  • быстрая разработка;
  • создание версий для разных платформ на основе готового кода (desktop и mobile приложения).

Минусы SPA-сайтов:

  • JavaScript не обpaбатывается большинством поисковых систем;
  • SPA-сайты не работают без включенного JS в браузере;
  • их нельзя анализировать на предмет ошибок популярными программами и инструментами (например, Netpeak Spider).

Популярные JavaScript фреймворки:

Истории бизнеса и полезные фишки

Какие поисковые системы индексируют SPA-сайты

На сегодняшний день только поисковый робот Google умеет рендерить содержимое SPA-сайтов, так как использует для рендеринга инструменты на базе Chrome 41. ASK.com использует выдачу Google. Для остальных поисковых систем необходимо наличие контента в коде в формате HTML.


Оптимизация индексации SPA-сайтов

Роботы Google и Yandex могут проиндексировать Single Page Application, если структура сайта соответствует определенным правилам. При этом для Яндекса необходимо обязательное наличие полной HTML-копии страницы. Читайте больше про seo продвижение Single Page Application.

Для Google нужно использовать только правильный формат URL. Летом 2018 Google перестанет индексировать HTML-копии страниц, а будет использовать только рендеринг.

(!) Нельзя запрещать индексирование JS и CSS файлов для поисковых роботов Google. Ограничив их индексацию, Google не сможет проиндексировать содержимое SPA-сайтов.

Существует два способа «заставить» поисковых роботов индексировать AJAX-страницы:

  1. Использовать «?_escaped_fragment_=».
  2. Отдавать роботу HTML-копии определяя его по user-agent.

Использование «?_escaped_fragment_=»

Этот способ подразумевает генерацию HTML-копий страниц (снимков) по отдельному URL с использованием параметра «?_escaped_fragment_».

Использование URL c «#!»

Если адреса AJAX страниц формируются с помощью «#» (хеш), значит нужно заменить их на «#!» (хешбенг). Например, с https://example.com/#url на https://example.com/#!url.

Google просканирует содержимое по основному URL, а робот Яндекса, обнаружив в URL «#!», запросит снимок страницы. Он заменит «#!» на «?_escaped_fragment_=» и просканирует ее по адресу https://example.com/?_escaped_fragment_=url.

Примеры адресов c «#!» и HTML-копий страниц:

  • https://example.com/home#!page → https://example.com/home?_escaped_fragment_=page;
  • https://example.com/index/#!main → https://example.com/index/?_escaped_fragment_=main;
  • https://example.com/#!home/index → https://example.com/?_escaped_fragment_=home/index.

Использование «традиционных» URL

Если на сайте используются «традиционные» URL (https://example.com/url), необходимо указать на всех страницах мета-тег:

<meta name=\"fragment\" content=\"!\">

Google просканирует содержимое по основному URL, а робот Яндекса, обнаружив на странице мета-тег , запросит HTML-копию страницы. Также добавит в URL параметр «?_escaped_fragment_=» и просканирует ее по адресу https://example.com/url?_escaped_fragment_=

Для популярных фреймворков есть готовые решения, которые заменяют «#!» на «традиционные» URL, например, HTML5 mode для Angular.

(!) В HTML-копии документа мета-тег размещать не следует: в этом случае страница не будет проиндексирована.

(!) На страницах HTML-копий canonical должен либо отсутствовать, либо вести сам на себя.

Например, на странице https://example.com/home?_escaped_fragment_= должен быть указан следующий canonical:

<link rel=\"canonical\" href=\"https://example.com/home?_escaped_fragment_=\" />

 

Отдавать HTML-копии страницы по основному URL

Этот способ подходит для SPA-сайта с «традиционными» URL. В чем суть: поисковый робот, запрашивая страницу по основному URL, вместо динамической версии получает HTML-копию страницы.

Определить поискового робота можно по User-Agent. К примеру, по списку роботов Яндекса.

Рендеринг HTML-копий

Для того, чтобы поисковые системы смогли проиндексировать содержимое, необходимо реализовать создание HTML-копий страниц.

HTML-копии — это отрендеренные версии страниц SPA-сайта. Например, содержимое исходного кода страницы SPA-сайта выглядит так:

<html lang=\"ru\"><head> <title>Single Page Applicationtitle> <meta name=\"fragment\" content=\"!\">head><body> <script type=\"text/javascript\" src=\"/assets/js/app.min.js?554997697\">script>body>html>


А вот отрендеренная HTML-копия этой страницы:

<html lang=\"ru\"><head> <title>TITLE страницыtitle> <meta name=\"keywords\" content=\"ключевые слова\"> <meta name=\"description\" content=\"Описание страницы \"> <meta name=\"viewport\" content=\"width=device-width,maximum-scale=1,initial-scale=1,user-scalable=0,shrink-to-fit=no\"> <link rel=\"canonical\" href=\"https://site.com/\"> <link href=\"/favicon.ico\" type=\"image/x-icon\" rel=\"shortcut icon\"> <meta name=\"robots\" content=\"index, follow\"> <link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"/style.css\">head><body> <div>СОДЕРЖИМОЕ СТРАНИЦЫdiv>body>html>


Для создания HTML-копий страниц можно:

  1. Использовать рендеринг на своих серверах.
  2. Использовать рендеринг на аутсорсе.
  3. Использовать изоморфный JavaScript.

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

Рендеринг на своих серверах

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

Рендеринг на аутсорсе

Подходит для небольших проектов. Для рендеринга HTML-копий на сторонних серверах можно использовать такие инструменты:

Изоморфный JavaScript

Изоморфный JavaScript позволяет выполнять рендеринг страницы как на сервере, так и в браузере пользователя. Таким образом, при первой загрузке страницы пользователь получает обычную HTML-страницу и JavaScript-приложение. Дальнейшая навигация по сайту для пользователя будет динамической, в то время как поисковые системы каждый раз будут получать HTML-версию страницы.

Такой подход к разработке сайта позволяет убить сразу двух зайцев: сайт получает все преимущества SPA-сайта и возможность продвижения в поисковых системах без дополнительных внедрений.

Обработка 404 страниц

Рендеринг страницы на SPA-сайтах происходит на стороне клиента, поэтому без дополнительных доработок код ответа несуществующей страницы будет 200 ОК.

SPA-сайты должны корректно обpaбатывать несуществующие страницы и отдавать в качестве заголовка страницы 404 ошибку.

Настройка Google ***ytics

Стандартный код Universal ***ytics выполняется при загрузке каждой новой страницы, а SPA-сайты подгружают контент динамически, «имитируя» переход между страницами. Для того, чтобы Google ***ytics корректно обpaбатывал переходы на страницах, необходимо сделать так, чтобы счетчик Universal ***ytics активировался каждый раз, когда на сайте меняется URL.

Настроить Google ***ytics для SPA-сайтов можно, используя Tag Manager и триггер «History» или — передавая данные вручную.

С помощью Tag Manager и триггера «History»

Использование HTML5 History API на SPA-сайтах позволяет настроить корректную работу счетчика Google ***ytics в GTM с помощью триггера «History». Каждый раз при обновлении истории (смены URL, Title), тег Google ***ytics будет активироваться повторно.

Для этого необходимо в настройках тега в качестве триггера указать дополнительный триггер:

Передача данных вручную

Каждый раз, когда в строке браузера меняется URL, необходимо передавать об этом информацию в Google ***ytics.

Чтобы обновить счетчик, нужно использовать комaнду «set» и указывать новое значение переменной «page»:

ga(\\\'set\\\', \\\'page\\\', \\\'/new-page.html\\\') ;

Теперь все последующие обращения будут привязаны к новому URL. Чтобы передать информацию о просмотре страницы, нужно использовать комaнду «send» и указывать значение «pageview» сразу после обновления счетчика:

ga(\\\'send\\\', \\\'pageview\\\') ;

Более подробную информацию можно узнать в справке Google ***ytics для одностраничных приложений.

Выводы

SPA-сайты — это настоящее и будущее, поэтому не нужно бояться брать в работу такие проекты. Single Page Application можно «подружить» с поисковыми системами. Чтобы ваш SPA-сайт был дружелюбен как к SEO, так и к пользователям, я рекомендую:

  1. Использовать «традиционные» URL.
  2. Использовать изоморфные приложения или рендеринг HTML-копий.
  3. Настроить правильную отдачу заголовка «404 Not Found».
  4. Настроить корректную работу Google ***ytics.



Комментарии:

Как переселить стартап в Кpaков: советы от Ярослава Легенчука

Как переселить стартап в Кpaков: советы от Ярослава Легенчука Ярослав Легенчук поделился историей успешного «переезда» площадки IT-продукта из Рунета в страны ЕС...

18 04 2026 22:12:17

Что такое фишинговая ссылка и как проверить сайт на её наличие

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

17 04 2026 11:25:20

Как показать пользователю статистику Google ***ytics, не открывая доступ? Мануал

Как показать пользователю статистику Google ***ytics, не открывая доступ? Мануал Вам тоже нужно предоставлять отчеты о работе рекламной кампании, посещение сайтов? Держите три примера работы с Google ***ytics и понятных отчета по ним, которые можно продемонстрировать, не открывая доступ к аккаунту....

16 04 2026 6:13:36

Масштабный редизайн блога UniSender — рост органического трафика

Масштабный редизайн блога UniSender — рост органического трафика Как за полгода обновить корпоративный блог, зачем это может быть нужно. О том, как начинали с сегментации, внедряли SEO-рекомендации, оптимизировали ЧПУ, трaнcлитерацию, пагинацию и структуру блога вплоть до конкретной работы со статьями, рейтингами и их страницами...

15 04 2026 17:30:18

Как оптимизировать контент: title, h1, description, keywords

Как оптимизировать контент: title, h1, description, keywords Грамотно оформленные метатеги презентуют сайт, помогают пользователям быстро найти нужную информацию, а поисковым системам — повысить ресурс в выдаче...

14 04 2026 20:35:20

Как найти тему для срача — на примере vc.ru

Как найти тему для срача — на примере vc.ru Как найти тему для поста, который и в онлайн поиске будет хорошо ранжироваться, и по социалкам разойдется, и комментарии в треде обеспечит...

13 04 2026 21:30:20

Как мы сделали аналитический инструмент для блога Netpeak

Как узнать, хорошую ли статью вы опубликовали в блоге...

12 04 2026 1:27:28

Как продвигать видео YouTube в Google Рекламе

Как продвигать видео YouTube в Google Рекламе Есть восхитительная возможность продвинуть видео на YouTube с минимальными финансовыми потерями!...

11 04 2026 13:24:25

SEO в нише онлайн-образования. Исследование Serpstat

SEO в нише онлайн-образования. Исследование Serpstat Комaнда Serpstat проанализировала стратегии продвижения лидеров ниши онлайн-образования. Читайте о главных инсайтах в посте....

10 04 2026 12:48:15

Как быстрее создавать рекламные кампании для Google Ads и Директ с помощью API Serpstat

Как быстрее создавать рекламные кампании для Google Ads и Директ с помощью API Serpstat Как автоматически формировать и выгружать готовые рекламные кампании для Яндекс.Директ и Google Ads со структурой «одна группа объявлений — один key»...

09 04 2026 6:43:30

Как я набрал первую тысячу подписчиков в Telegram-канале — обзор платных и бесплатных методов

Как я набрал первую тысячу подписчиков в Telegram-канале — обзор платных и бесплатных методов Раскрутить телеграм-канал с нуля до тысячи — реально. Раскрываем пошаговый алгоритм и даем рекомендации для SMM-специалистов....

08 04 2026 12:13:30

Бизнес-фреш: что такое digital и чем это отличается от SMM (продвижения в социальных сетях)

Бизнес-фреш: что такое digital и чем это отличается от SMM (продвижения в социальных сетях) «Что такое диджитал и чем это отличается от услуги продвижения в социальных сетях» — о цифровой стратегии, креативных концепциях и том, как это все происходит в крупных агентствах....

07 04 2026 7:46:18

Как оценить новый канал трафика?

Как оценить новый канал трафика? Эффективен ли ваш канал привлечения трафика? Лучше писать об этом с помощью формул...

06 04 2026 3:35:38

Топ ошибок новичков в Google Рекламе

Топ ошибок новичков в Google Рекламе Топ-8 ошибок новичков в Google Рекламе: как сэкономить деньги при планировании рекламной кампании....

05 04 2026 0:16:20

AMP-письма: что это, чем полезны, примеры лучших писем

AMP-письма: что это, чем полезны, примеры лучших писем Как создавать интеpaктивные рассылки-сайты и чем они хороши...

04 04 2026 18:32:21

Фокус, обучение, контроль — три кита развития бизнеса. Хасан Исламов об истории Chocofamily

Фокус, обучение, контроль — три кита развития бизнеса. Хасан Исламов об истории Chocofamily Хасан Исламов о развитии Chocofamily, крупнейшего интернет-холдинга Казахстана....

03 04 2026 10:34:39

Платиновые правила продающего видеоконтента на YouTube

Платиновые правила продающего видеоконтента на YouTube Каким правилам нужно следовать, чтобы создать эффективный рекламный ролик?...

02 04 2026 19:38:41

10 трендов email-маркетинга в 2022 году

10 трендов email-маркетинга в 2022 году All about internet mail. Примеры того, что стоит внедрить в рассылках почты онлайн....

01 04 2026 8:56:42

Как подобрать низкочастотные запросы и для чего это нужно

Низкочастотные, низкоконкурентные, Long Tail и другие термины, которые нужно знать и понимать....

31 03 2026 6:30:14

Как отслеживать трафик PBN-сайтов

Как отслеживать трафик PBN-сайтов Если в сетке сайтов есть интересный домен, его можно использовать для дополнительной монетизации, а не только для ссылок. В таком случае важно знать, как правильно отслеживать трафик таких доменов....

30 03 2026 14:21:38

Семь улучшений Netpeak: итоги года и цели на 2017

Netpeak подводит итоги 2016 года и делится планами на будущее....

29 03 2026 15:17:25

Кейс по продвижению интернет-магазина велосипедов и велозапчастей: ROMI 58%

Проделанные шаги и полученные результаты при раскрутке магазина великов в интернете...

28 03 2026 20:42:55

Чем опасна рассылка на «купленную базу» и как повысить репутацию домена — антикейс

Чем опасна рассылка на «купленную базу» и как повысить репутацию домена — антикейс Мы восстановили репутацию и повысили рейтинг домена за три месяца....

27 03 2026 23:26:25

Канонический URL: как повысить рейтинг одинакового контента

Канонический URL: как повысить рейтинг одинакового контента Атрибут rel="canonical" помогает бороться с дублированием контента и обезопасить сайт от дублирования и копирования...

26 03 2026 4:34:36

Свадьба в IT, или Как пиарщику доверить организацию самого важного ивента подрядчику

Свадьба в IT, или Как пиарщику доверить организацию самого важного ивента подрядчику Организаторам мероприятий, коллегам из PR-сферы и невестам о том, как делегировать важные мероприятия внешнему подрядчику...

25 03 2026 3:42:28

Собеседование в рекламное агентство Ogilvy

Собеседование в рекламное агентство Ogilvy Тест, который проходят все соискатели. Никому не показывайте!...

24 03 2026 18:40:44

Продвижение мобильного приложения в Яндекс.Директ — руководство для новичков

Продвижение мобильного приложения в Яндекс.Директ — руководство для новичков Детальная инструкция по настройке рекламы мобильного приложения в Яндекс.Директ....

23 03 2026 15:14:43

Что такое Progressive Web Apps и какие возможности они открывают для вашего бизнеса

Определение сайта нового типа. Захочет ли бизнес интернета перевести свои веб-приложения на более прогрессивные рельсы?...

22 03 2026 18:11:22

На что ориентироваться при составлении бюджета на рекламу

На что ориентироваться при составлении бюджета на рекламу Что делать перед составлением рекламного бюджета — инструкция для предпринимателей...

20 03 2026 8:59:39

Как обойти агрегаторы и маркетплейсы в выдаче: пошаговая инструкция

Как обойти агрегаторы и маркетплейсы в выдаче: пошаговая инструкция Доминирование маркетплейсов и агрегаторов в Яндексе усилилось. Первый магазин появляется не раньше 5 позиции. Поэтому компания Alto подготовила пошаговое руководство - как обойти агрегаторы в выдаче....

19 03 2026 2:24:19

Примеры лучших страниц оформления заказа интернет-магазинов

Примеры лучших страниц оформления заказа интернет-магазинов Корзина интернет-магазина поможет повысить продажи, если ее функционал содержит: фото товара, кликабельное наименование товара, перечень способов оплаты. Узнать больше!...

18 03 2026 18:23:47

Сленг — словарь в помощь бумерам для работы со стартаперами и маркетологами

Сленг — словарь в помощь бумерам для работы со стартаперами и маркетологами Слорварь сленга, без которого к 25-летним не подходи...

17 03 2026 23:39:45

Как провести тендер и выбрать подрядчика в сфере интернет-маркетинга — чек-лист

Как провести тендер и выбрать подрядчика в сфере интернет-маркетинга — чек-лист Один из лучших способов выбрать подрядчика — провести брифинг для компаний. При этом важно предоставить максимум информации: откройте доступ к реальным данным по проекту. Узнать больше!...

16 03 2026 23:23:50

Google Ads — как работает планировщик ключевых слов

Подобрать нужные слова поможет проверка Google Рекламы....

15 03 2026 8:55:24

Кейс по таргетированной рекламе в тематике «нижнее белье» или как увеличить продажи перед праздниками: ROMI 29%

Кейс по таргетированной рекламе в тематике «нижнее белье» или как увеличить продажи перед праздниками: ROMI 29% Для продвижения интернет-магазина женского нижнего белья мы решили попробовать новый источник привлечения клиентов....

14 03 2026 16:57:40

Что такое ASO и как правильно продвигать мобильное приложение

Что такое App Store optimization и как раскручивать мобильные приложения...

13 03 2026 14:36:10

10 ярких примеров контент-маркетинга в аграрной индустрии

Полезный и интересный контент — это лучший крючок, который помогает привлечь новых клиентов на аграрном рынке и удержать их внимание....

12 03 2026 19:52:50

16 советов для продуктового бизнеса от спикеров конференции SaaS Nation

16 советов для продуктового бизнеса от спикеров конференции SaaS Nation Истории бизнеса и советы от Игоря Жаданова (Readdle), Александра Галкина (Competera) и Рагнара Саас (Pipedrive)...

11 03 2026 1:36:10

Кейс: как провести анализ конкурентов с помощью SimilarWeb

Кейс: как провести анализ конкурентов с помощью SimilarWeb Определение, исследование и проверка конкурентов в Similarweb — первый шаг перед запуском и масштабированием проекта...

10 03 2026 17:15:49

Семь улучшений Netpeak: SEO, PPC и английская версия блога. Выпуск первый

Семь улучшений Netpeak: SEO, PPC и английская версия блога. Выпуск первый Сегодня мы открываем новую регулярную серию постов, в которых будем стараться раз в квартал рассказывать про семь важных улучшений Netpeak в работе с клиентами. Сейчас мы максимально сфокусированы на SEO и PPC....

09 03 2026 11:43:19

Как получить контакты клиентов в Facebook с помощью чат-бота ManyChat

Инструкция по интеграции рекламной кампании с чат-ботом...

08 03 2026 8:59:52

Как провести A/B-тест сайта: инструменты и популярные гипотезы

Как провести A/B-тест сайта: инструменты и популярные гипотезы 22 оригинальные гипотезы для A/B-теста сайта, которые чаще всего влияют на получаемую прибыль...

07 03 2026 18:46:52

Кейс «Мой Город»: как мы за месяц подняли трафик из Facebook на 86%

Цель — трафик facebook. Делимся кейсом проекта «Мой город»....

06 03 2026 7:22:57

Сколько стоил клик в Google Ads в Украине в третьем квартале 2021 года

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

05 03 2026 19:53:34

Как собрать миллион подписок на рассылку за год: советы от BuzzFeed

Как собрать миллион подписок на рассылку за год: советы от BuzzFeed Рассылка ежемecячно занимает второе место среди источников реферального трафика BuzzFeed. Уроки увеличения базы подписчиков от BuzzFeed от базы до метрик оценки. Принцип BuzzFeed — как можно быстрее внедрять в рассылку то, что нравится читателям....

04 03 2026 1:17:31

Как объединять данные при создании отчета в Data Studio

Как объединять данные при создании отчета в Data Studio В статье коротко о способах объединения данных из разных источников для создания отчётов...

03 03 2026 9:24:28

Как подключить Яндекс.Метрику к Яндекс.Директу

Как подключить Яндекс.Метрику к Яндекс.Директу Чтобы грамотно анализировать статистику рекламных кампаний, необходимо связать Яндекс.Метрику и Яндекс.Директ. Рассказываем, как это сделать...

02 03 2026 16:53:27

Как настраивать представления в Google ***ytics — подробное руководство

Как настраивать представления в Google ***ytics — подробное руководство Представление — это уровень доступа в аккаунте Google ***ytics. На уровне представления можно предоставить или ограничить доступ пользователей к отчетам и аналитическим инструментам...

01 03 2026 20:58:42

Эффективная работа с микроблогом Twitter: планирование твитов по времени

Эффективная работа с микроблогом Twitter: планирование твитов по времени Твиттереть нужно правильно. Интересная аналитики и планирование твитов по времени...

28 02 2026 8:54:47

Еще:
понять и запомнить -1 :: понять и запомнить -2 :: понять и запомнить -3 :: понять и запомнить -4 :: понять и запомнить -5 :: понять и запомнить -6 :: понять и запомнить -7 ::