- PVSM.RU - https://www.pvsm.ru -
Мы реализовали мультирегиональность на eCommerce-платформе OpenPets с помощью поддоменов, геолокации по IP, MODX и интеграции с CRM. Делимся архитектурой, кодом, решениями и подводными камнями.
OpenPets — это маркетплейс и контентная платформа для владельцев домашних животных. Мы начали с одного региона — Челябинска, но поняли, что запросы типа «купить корм Royal Canin в Новосибирске» требуют не просто SEO‑оптимизации, а полноценной географической кастомизации сайта:
цены, склады и доставка зависят от города,
пользователи хотят видеть локальные акции и телефоны,
поисковики любят «локальные страницы», если они уникальны.
Мы выбрали поддомены для каждого региона: chel.openpets.ru [1], msk.openpets.ru [2] и т.д. Это позволяет:
сегментировать контент по городам,
генерировать уникальные URL,
подключать региональные SEO-элементы.
Пользователя при первом заходе определяем по IP‑геолокации, но предлагаем окно с выбором города, чтобы исключить ошибочную автоподстановку.
MODX Revolution (CMS)
PHP / MySQL
RetailCRM (интеграция через API)
NGINX / Cloudflare
Мы создали таблицу regions с ID, названием, алиасом поддомена, телефонными номерами и локальными настройками.
CREATE TABLE regions (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255),
subdomain VARCHAR(50),
phone VARCHAR(20),
city_lat FLOAT,
city_lon FLOAT
);
На backend мы используем SxGeo:
require_once("SxGeo.php");
$SxGeo = new SxGeo('SxGeoCity.dat');
$ip = $_SERVER['REMOTE_ADDR'];
$city = $SxGeo->getCity($ip)['city']['name'];
Если город найден в базе regions, делаем редирект на нужный поддомен. Иначе — показываем popup с выбором.
Чтобы избежать дублирования в индексе:
каждая региональная страница получает rel=canonical на саму себя,
между регионами расставляем hreflang:
<link rel="alternate" hreflang="ru-ru" href="https://msk.openpets.ru/product/123" />
<link rel="alternate" hreflang="ru-ru" href="https://chel.openpets.ru/product/123" />
Для каждого региона мы формируем:
уникальные title, description, H1;
блоки с адресами, телефонами, локальными акциями;
уникальные SEO‑тексты внизу страниц.
$title = "Купить корм Royal Canin для кошек в " . $region['name'];
$meta_description = "Интернет-магазин OpenPets — быстрая доставка по " . $region['name'];
Для каждого региона настроен свой склад в CRM. При заказе мы передаём регион ID через API, и система автоматически распределяет заказы.
$client = new \RetailCrm\ApiClient(...);
$client->ordersCreate([
'site' => $region['subdomain'],
'customFields' => ['region_id' => $region['id']]
]);
Через 3 месяца после запуска:
+48% SEO‑трафика за счёт региональных LSI и geo‑запросов;
снижение отказов на 21% (люди сразу видят свой город);
рост конверсии в Челябинске на 33%.
Мы планируем:
подключить регионы Казахстана и Беларуси (multilang + мультистрана);
автоматическую генерацию контента на основе GPT + шаблонов;
улучшить инфраструктуру для Core Web Vitals в регионах.
Мультирегиональность — это не только SEO, но и UX. Грамотная техническая реализация повышает доверие и конверсии. Делать это нужно с самого старта проекта, а не постфактум.
Если у вас был аналогичный кейс — пишите, обсудим архитектуру и подводные камни.
Автор: OpenPets
Источник [3]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/openpets/422457
Ссылки в тексте:
[1] chel.openpets.ru: http://chel.openpets.ru
[2] msk.openpets.ru: http://msk.openpets.ru
[3] Источник: https://habr.com/ru/articles/918278/?utm_source=habrahabr&utm_medium=rss&utm_campaign=918278
Нажмите здесь для печати.