TL; ДР; Это возможно и не так сложно, как кажется.

Введение

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

Как мы можем увеличить количество посещений, не оплачивая услуги третьих лиц?

Но прежде позвольте мне объяснить вам ситуацию:
Более года назад у этого клиента был сайт, созданный с помощью wordpress, и они больше не хотели его использовать, он был старым, медленным и непригодным для использования.
Мы начал создавать очень простой сайт, написанный в основном на PHP, но на половине работы Лоренцо Д'Ианни сказал мне:

– Почему бы нам не попробовать использовать JS-фреймворк и создать очень крутой SPA?
– Конечно! Это может быть очень смешно!

И это было так. Действительно!
Но… Была небольшая проблема, фреймворк, который мы использовали для этого проекта, не был «готов к REST», и у нас не было достаточно времени, чтобы изучить другой..

Поэтому мы решили использовать PHP-маршрутизацию для обработки HTTP-запросов, а JS-фреймворк — только в качестве «помощника».

Что случилось?

Наш клиент вернулся к нам, сказав, что он оплачивал услугу по SEO-оптимизации, но результат был не очень хорошим, в частности по стоимости услуги, и они хотели бы ее удалить.

Сначала мы предложили создать страницы с подробными сведениями об их продуктах, а затем также спросили:

– Почему бы не переписать весь сайт в более современном стиле?

После объяснения преимуществ мы убедили клиента перенести монолитное приложение в 2 разных приложения, чтобы иметь одно клиентское приложение, а другое — для RESTful API.

Теперь начинается техническая часть

После того, как веб-сайт был создан, мы начали искать, как оптимизировать SEO для SPA (для этого проекта мы использовали AngularJS).

Прежде всего, мы прочитали, что GoogleBot, прежде чем получить содержимое страниц, выполняет JavaScript.
Поэтому мы были рады узнать, что Google правильно читает страницы.

Но после небольшой проверки наше счастье уходит.
С помощью этого инструмента мы замечаем, что GoogleBot не отрисовывал страницы так, как мы ожидали. Поэтому мы искали еще немного информации по теме, пока не прочитали это:

…веб-сайты не должны выполнять предварительный рендеринг страниц только для Google — мы ожидаем, что вы можете предварительно рендерить страницы для повышения производительности для пользователей и что вы будете следовать рекомендациям по постепенному улучшению.

В нескольких словах предварительная обработка позволяет Google (и другим поисковым роботам) сканировать страницу, когда она полностью загружена.

Этот результат может быть достигнут с помощью PhantomJS.
Нам нужно настроить сервер NodeJS, который по заданному URL-адресу будет отображать содержимое страницы, полностью загруженное для сканера.
Но у клиента не было денег на микро- сервер, который должен обрабатывать эти запросы.

Поэтому мы использовали службу под названием SEO4AJAX (это всего лишь экземпляр PhantomJS, похожий на prerender.io, но дешевле и с меньшим количеством сообщества) бесплатно для 1000 страниц и 5000 снимков в месяц, на нашем сайте всего 100 страниц, это было идеально.

Самая большая проблема: Aruba.it

Веб-хостинг был САМОЙ БОЛЬШОЙ проблемой.

Базовая конфигурация (с добавлением только пользовательского агента для WhatsApp) находится в этой сути.

Единственный модуль Apache, необходимый для использования службы SEO4AJAX: модуль ‘proxy_http’ включен.

На Арубе его нет и нет возможности его включить, потому что «хостинг не имеет доступа по ssh или управления машиной, вы можете добавлять файлы только по FTP».

Итак, с командой SEO4AJAX мы работали над созданием пользовательского .htaccess в сочетании с php-файлом, способным перехватывать запросы от определенного пользовательского агента.

Конец

После настройки этих двух файлов служба работает отлично.
Я рекомендую еще одну вещь: некоторые поисковые роботы (например, Facebook) имеют очень короткое время ожидания для обработки страницы.
Если вы этого не сделаете, заставить экземпляр PhantomJS кэшировать файл для каждой сгенерированной страницы, могут возникнуть проблемы.

При использовании SEO4AJAX для этого есть специальный URL (просто API).
Чтобы захватить
http://www.yoursite.it/this-is-an-example-page
, вам нужно запрос
http://api.seo4ajax.com/YOURAPIKEY/this-is-an-example-page

Если у вас есть проблемы, вы можете написать что-нибудь ниже в разделе комментариев, я надеюсь, что был полезен.