Настройка мультирегиональности сайта 1С-Битрикс
Мультирегиональность — это когда Москва видит одни цены и контент, Екатеринбург другие, а поисковик индексирует оба варианта раздельно. В Битриксе это достигается несколькими подходами с разными компромиссами по сложности реализации и SEO-результату.
Три архитектурных подхода
Поддомены: msk.example.com, ekb.example.com. Каждый поддомен — отдельный сайт в мультисайтовой инсталляции (b_lang). Чистое решение с точки зрения SEO — разные URL для разных регионов. Сложнее в поддержке: контент нужно синхронизировать между сайтами или использовать общие инфоблоки с фильтрацией по привязке к сайту.
Директории: example.com/msk/, example.com/ekb/. Технически проще: один сайт, разные разделы инфоблока. SEO хуже, чем поддомены, но приемлемо при правильной настройке geotargeting в Яндекс.Вебмастере.
GET-параметр или cookie: example.com/?region=msk. Плохой выбор для SEO — один URL, разный контент, поисковик не может различить.
Для серьёзных проектов — поддомены. Для небольших — директории.
Реализация через поддомены в мультисайтовости
Создаёте несколько сайтов в Битриксе (b_lang): msk с SERVER_NAME = msk.example.com, ekb с SERVER_NAME = ekb.example.com. У каждого сайта свой языковой код и свои настройки.
Инфоблоки в Битриксе привязываются к сайтам через таблицу b_iblock_site. Инфоблок может быть общим для всех сайтов или отдельным для каждого. Для каталога товаров обычно один общий инфоблок, а региональные цены управляются через прайс-листы (b_catalog_price с привязкой к группам пользователей).
Региональные цены: создаёте типы цен в каталоге (/bitrix/admin/cat_price_type.php) — «Москва», «Регионы». Пользователь при переходе на региональный сайт автоматически попадает в группу с нужным типом цены. Логика присвоения группы — в OnAfterUserAuthorize и при каждой смене региона.
Определение региона пользователя
Автоматическое определение через IP + вручную через «попап выбора города». Модуль sale содержит класс \Bitrix\Sale\Location\LocationTable и таблицу b_sale_location с иерархией городов/регионов. Но для геопозиционирования по IP Битрикс не предоставляет встроенного решения — используете сторонние сервисы (MaxMind GeoIP, Sypex Geo, DaData).
Типичная схема: при первом визите определяете регион по IP через внешний API или локальную базу GeoIP, показываете попап «Ваш город — Екатеринбург? Да / Выбрать другой», сохраняете выбор в сессию и cookie с длительным TTL.
$regionId = $_COOKIE['user_region'] ?? detectRegionByIp($_SERVER['REMOTE_ADDR']);
$_SESSION['REGION_ID'] = $regionId;
// Перенаправляем на нужный поддомен если не совпадает
SEO-настройки для мультирегионального сайта
В Яндекс.Вебмастере для каждого поддомена настраивается геопривязка: Москва → msk.example.com, Екатеринбург → ekb.example.com. Это позволяет поисковику ранжировать региональные версии по соответствующим регионам.
Тег hreflang для региональных вариантов на русском языке не нужен (он для языков, не регионов). Но canonical — нужен: если один URL доступен с обоих поддоменов, указываете canonical на основной.
В Битриксе canonical устанавливается в шаблоне через $APPLICATION->SetPageProperty('canonical', 'https://msk.example.com' . $APPLICATION->GetCurPage()).
Региональные телефоны и адреса
Контент, специфичный для региона — телефоны, адреса офисов, условия доставки. Это либо параметры сайта в b_option с суффиксом региона, либо отдельный инфоблок «Офисы» с привязкой к региону через свойство. Компонент на странице контактов фильтрует офисы по текущему сайту/региону.







