Индексация отзывов (SEO)

Настройте полноценную индексацию отзывов (SEO) и другого UGC контента, отображаемого через виджеты Aplaut

Чтобы виджеты полноценно индексировались поисковыми роботами, необходимо выполнить следующие действия:

  1. Получить ключ к Widgets API в ЛК.

  2. Сделать запрос одним из описанных в документации способов.

  3. Встроить полученный HTML в веб-страницу.

Данный подход мы называем Inline SEO. Пример запроса виджета:

$ curl http://w-api2.aplaut.io/widgets/v2/render?authentication_token=Mr04u1yyM7rTDsp1C8Yy&theme_id=development&context=product&context_id=257086873&widget_id=inline-rating

HTTP/1.1 200 OK

<div id="aplaut-product-reviews-widget">
    <div class="sp-summary">
        <div class="sp-summary-top-row">
        ...


Существует несколько способов встроить виджет в HTML документ. Два популярных способа:

  • SSI (Server-Side Includes)

  • Средствами CMS или веб-фреймворка


SSI


Технология серверных вставок (SSI) позволяет динамически собирать веб-страницы на сервере из отдельных составных частей и выдавать клиенту полученный HTML-документ.


На веб-странице в место, где должны появиться отзывы (любой другой виджет), добавьте следующий код (пример для PHP):

<div id="aplaut-reviews-container">
  <!--#include virtual="/aplaut/widgets/v2/render?authentication_token=Mr04u1yyM7rTDsp1C8Yy&theme_id=development&context=product&context_id=<?= PRODUCT_ID ?>&widget_id=inline-rating"-->
</div>


На стороне вашего веб-сервера необходимо включить SSI и организовать проксирование запросов к Widgets API.


Пример для Nginx

server {
  # ssi enable
  ssi on;

  # proxy pass
  location /aplaut/ {
    proxy_set_header Accept-Encoding "identity";
    proxy_pass_request_body off;
    proxy_pass http://w-api2.aplaut.io/;
    proxy_connect_timeout 10;
    proxy_read_timeout 10;
    error_page 404 502 504 = @aplaut-widgets;
  }

  # in case of error you will get empty response
  location @aplaut-widgets {
    return 204;
  }
}


Пример для Nginx (дополнительное кэширование)

В случае если вы хотите дополнительно кэшировать виджеты в Nginx, то код будет примерно такой:


http {
    # ...

    # ------------- SETUP CACHE FOR WIDGETS ------------ #
    proxy_cache_path /tmp/nginx/cache levels=1:2 keys_zone=widgets-cache:100m max_size=1G;
    proxy_temp_path /tmp/nginx/proxy 1 2;
    proxy_ignore_headers Expires Cache-Control;
    # -------------------------------------------------- #

    server {

      location /aplaut/ {
        # -------------- USING CACHE FOR WIDGETS ------------ #
        proxy_cache widgets-cache;
        proxy_cache_methods GET HEAD POST;
        proxy_cache_valid 200 302 1d; # 1 day
        proxy_cache_valid 404 30m;    # 30 minutes
        proxy_cache_use_stale http_502 http_503;
        # -------------------------------------------------- #

        proxy_set_header Accept-Encoding "identity";
        proxy_pass_request_body off;
        proxy_pass http://w-api2.aplaut.io/;
        proxy_connect_timeout 10;
        proxy_read_timeout 10;
        error_page 404 502 504 = @aplaut-errors;
      }

      location @aplaut-errors {
        return 204;
      }
    }
}


Подробнее про технологию SSI читайте в документации Nginx.


CMS или веб-фреймворк


Вставку контента можно также организовать средствами вашей CMS или веб-фреймворка. Пример на PHP:

$widget_url = curl_init("http://w-api2.aplaut.io/widgets/v2/render?authentication_token=Mr04u1yyM7rTDsp1C8Yy&theme_id=development&context=product&context_id=257086873&widget_id=inline-rating"
);
curl_setopt_array($widget_url, [
  CURLOPT_TIMEOUT        => 2,
  CURLOPT_SSL_VERIFYPEER => 0,
  CURLOPT_FOLLOWLOCATION => 0,
  CURLOPT_FAILONERROR    => 1,
  CURLOPT_RETURNTRANSFER => 0
]);
$widget_html = curl_exec($widget_url);
printf($widget_html);


Далее результат выполнения команды $widget_html встраивается в страницу.

Обязательно проверяйте код возврата, и только при ответе 200 OK встраивайте результат запроса в страницу.

👆 На этом пока всё