- Що таке SPA
- Які пошукові системи індексують SPA-сайти
- Оптимізація індексації SPA-сайтів
- Використання «? _Escaped_fragment_ =»
- Використання URL c «#!»
- Використання «традиційних» URL
- Віддавати HTML-копії сторінки за основним URL
- Рендеринг HTML-копій
- Візуалізація на своїх серверах
- Візуалізація на аутсорс
- ізоморфний JavaScript
- Обробка 404 сторінок
- Налаштування Google Analytics
- За допомогою Tag Manager і тригера «History»
- Передача даних вручну
- висновки
Останнім часом в роботі фахівців Netpeak Agency багато сайтів, які використовують AJAX-технології , А також сайтів написаних на JavaScript фреймворк. Без додаткової оптимізації вони не готові до просування в пошукових системах. Тому я детально опишу, що таке SPA-сайти, як вони працюють, і як можна зробити Single Page Application SEO-Friendly. Стаття буде корисна SEO-фахівцям і власникам сайтів, які хочуть перейти на Single Page Application, але не наважуються, бо SPA можуть «посваритися» з пошуковими системами. SPA (Single Page Application) - односторінкове JavaScript додаток, що запускається і працює в браузері. На відміну від «традиційного» сайту, архітектура на SPA-сайтах побудована так, що рендеринг сторінки повністю відбувається на стороні клієнта, а не на стороні сервера. У браузері користувача запускається JavaScript-додаток, а все необхідне вміст сторінок динамічно завантажується за допомогою AJAX. Навігація по сайту відбувається без перезавантаження сторінок. За рахунок такої архітектури, SPA-сайти працюють швидше, ніж «традиційні» сайти. Розглянемо детальніше, як відбувається завантаження і рендеринг вмісту на SPA-сайтах: Плюси SPA-сайтів: Мінуси SPA-сайтів: Популярні JavaScript фреймворки: На сьогоднішній день тільки пошуковий робот Google вміє рендерить вміст SPA-сайтів, так як використовує для рендеринга інструменти на базі Chrome 41. ASK.com використовує видачу Google. Для інших пошукових систем необхідна наявність контенту в коді в форматі HTML. Роботи Google і Yandex можуть проіндексувати Single Page Application, якщо структура сайту відповідає певним правилам. При цьому, для Яндекса необхідна обов'язкова наявність повної HTML-копії сторінки. Для Google потрібно використовувати тільки правильний формат URL. влітку 2018 Google перестане індексувати HTML-копії сторінок , А буде використовувати тільки рендеринг. (!) Не можна забороняти індексування JS і CSS файлів для пошукових роботів Google. Обмеживши їх індексацію, Google не зможе проіндексувати вміст SPA-сайтів. Існує два способи «змусити» пошукових роботів індексувати AJAX-сторінки: Цей спосіб має на увазі генерацію HTML-копій сторінок (знімків) за окремим URL з використанням параметра «? _Escaped_fragment_». Якщо адреси AJAX сторінок формуються за допомогою «#» (хеш), значить потрібно замінити їх на «#!» (Хешбенг). Наприклад, з https://example.com/#url на https://example.com/#!url. Google просканує вміст за основним URL, а робот Яндекса, виявивши в URL «#!», Запросить знімок сторінки. Він замінить «#!» На «? _Escaped_fragment_ =» і просканує її за адресою https://example.com/?_escaped_fragment_=url. Приклади адрес c «#!» І HTML-копій сторінок: Якщо на сайті використовуються «традиційні» URL (https://example.com/url), необхідно вказати на всіх сторінках мета-тег: <Meta name = "fragment" content = "!"> Google просканує вміст за основним URL, а робот Яндекса, виявивши на сторінці мета-тег <meta name = "fragment" content = "!">, Запросить HTML-копію сторінки. Також додасть в URL параметр «? _Escaped_fragment_ =» і просканує її за адресою https://example.com/url?_escaped_fragment_= Для популярних фреймворків є готові рішення, які замінюють «#!» На «традиційні» URL, наприклад, HTML5 mode для Angular . (!) В HTML-копії документа мета-тег розміщувати не слід: в цьому випадку стаття не буде проіндексована. Наприклад, на сторінці https://example.com/home?_escaped_fragment_= повинен бути зазначений наступний canonical: <Link rel = "canonical" href = "https://example.com/home?_escaped_fragment_=" /> Цей спосіб підходить для SPA-сайту з «традиційними» URL. У чому суть: пошуковий робот, запитуючи сторінку за основним URL, замість динамічної версії отримує HTML-копію сторінки. Визначити пошукового робота можна по User-Agent. Наприклад, за списком роботів Яндекса . Для того, щоб пошукові системи змогли проіндексувати вміст, необхідно реалізувати створення HTML-копій сторінок. HTML-копії - це відрендерені версії сторінок SPA-сайту. Наприклад, вміст вихідного коду сторінки SPA-сайту виглядає так: <Html lang = "ru"> <head> <title> Single Page Application </ title> <meta name = "fragment" content = "!"> </ Head> <body> <script type = "text / javascript" src = "/ assets / js / app.min.js? 554997697"> </ script> </ body> </ 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-копій, тому, якщо ви використовуєте популярний фреймворк (наприклад, Angular), на впровадження HTML-копій сторінок повинно піти лише кілька годин розробника. Підходить для великих проектів. Для рендеринга HTML-копій на своїх серверах можна використовувати такі інструменти: Підходить для невеликих проектів. Для рендеринга HTML-копій на сторонніх серверах можна використовувати такі інструменти: Ізоморфний JavaScript дозволяє виконувати рендеринг сторінки як на сервері, так і в браузері користувача. Таким чином, при першому завантаженні сторінки користувач отримує звичайну HTML-сторінку і JavaScript-додаток. Подальша навігація по сайту для користувача буде динамічною, в той час як пошукові системи кожен раз будуть отримувати HTML-версію сторінки. Такий підхід до розробки сайту дозволяє вбити відразу двох зайців: сайт отримує всі переваги SPA-сайту і можливість просування в пошукових системах без додаткових впроваджень. Рендеринг сторінки на SPA-сайтах відбувається на стороні клієнта, тому без додаткових доробок код відповіді неіснуючої сторінки буде 200 ОК. SPA-сайти повинні коректно обробляти неіснуючі сторінки і віддавати в якості заголовка сторінки 404 помилку. Стандартний код Universal Analytics виконується під час завантаження кожної нової сторінки, а SPA-сайти підвантажують контент динамічно, «імітуючи» перехід між сторінками. Для того, щоб Google Analytics коректно обробляв переходи на сторінках, необхідно зробити так, щоб лічильник Universal Analytics активувався кожен раз, коли на сайті змінюється URL. Налаштувати Google Analytics для SPA-сайтів можна, використовуючи Tag Manager і тригер «History» або - передаючи дані вручну. Використання HTML5 History API на SPA-сайтах дозволяє налаштувати коректну роботу лічильника Google Analytics в GTM за допомогою тригера «History». Кожен раз при оновленні історії (зміни URL, Title), тег Google Analytics має використовуватися повторно. Для цього необхідно в налаштуваннях тега в якості тригера вказати додатковий тригер: Кожен раз, коли в рядку браузера змінюється URL, необхідно передавати про це інформацію в Google Analytics. Щоб оновити лічильник, потрібно використовувати команду «set» і вказувати нове значення змінної «page»: ga ( 'set', 'page', '/new-page.html'); Тепер всі наступні звернення будуть прив'язані до нового URL. Щоб передати інформацію про перегляд сторінки, потрібно використовувати команду «send» і вказувати значення «pageview» відразу після поновлення лічильника: ga ( 'send', 'pageview'); Більш детальну інформацію можна дізнатися в довідці Google Analytics для односторінкових додатків . SPA-сайти - це сьогодення і майбутнє, тому не потрібно боятися брати в роботу такі проекти. Single Page Application можна «подружити» з пошуковими системами. Щоб ваш SPA-сайт був доброзичливий як до SEO, так і до користувачів я рекомендую: Що таке SPA
Які пошукові системи індексують SPA-сайти
Оптимізація індексації SPA-сайтів
Використання «? _Escaped_fragment_ =»
Використання URL c «#!»
Використання «традиційних» URL
(!) На сторінках HTML-копій canonical повинен або відсутні, або вести сам на себе. Віддавати HTML-копії сторінки за основним URL
Рендеринг HTML-копій
А ось відрендерене HTML-копія цієї сторінки:
Для створення HTML-копій сторінок можна: Візуалізація на своїх серверах
Візуалізація на аутсорс
ізоморфний JavaScript
Обробка 404 сторінок
Налаштування Google Analytics
За допомогою Tag Manager і тригера «History»
Передача даних вручну
висновки
» На «?
Com/?
Com/home?
Com/index/?
Com/?
Також додасть в URL параметр «?
Com/url?
Com/home?
Com/home?