Индексация отзывов (SEO)
Чтобы виджеты полноценно индексировались поисковыми роботами, необходимо выполнить следующие действия:
- Получить ключ к Widgets API в ЛК.
- Сделать запрос одним из описанных в
- Встроить полученный HTML в веб-страницу.
Данный подход мы называем Inline SEO.
Пример запроса виджета:
$ curl http://w-api2.aplaut.io/widgets/v2/render?authentication_token=Mr04u1yyM7rTDsp1C8Yy&theme_id=default&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=default&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=default&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
встраивайте
результат запроса в страницу.