Настройка мультисайтовости 1С-Битрикс
Мультисайтовость в Битриксе — это когда на одной установке (одна кодовая база, одна БД) работают несколько сайтов с разным контентом, дизайном или языком. Типичный кейс: основной сайт компании и отдельный лендинг для акции, или русская и английская версии магазина. Без мультисайтовости приходится поднимать отдельные инстансы Битрикса — с удвоением расходов на лицензию, обслуживание и синхронизацию данных.
Как устроена мультисайтовость изнутри
Каждый сайт в Битриксе — это запись в таблице b_lang. Поле LID (двухсимвольный идентификатор: s1, s2) — ключ, по которому система определяет, какой сайт запрошен. Определение сайта происходит в bitrix/modules/main/include/prolog_before.php на основе:
-
Доменного имени — поле
SERVER_NAMEв настройках сайта -
Директории — поле
DOC_ROOTиDIR, если сайты разнесены по папкам -
Условий в файле
dbconn.php(устаревший подход) или черезSITE_IDв.settings.php
Привязка контента к сайту: инфоблоки, разделы каталога, пункты меню, шаблоны — всё привязывается к LID. Один инфоблок может быть доступен на нескольких сайтах, а может — только на одном.
Пошаговая настройка
1. Создание сайта. Административная панель → Настройки → Настройки продукта → Сайты. Создаём новый сайт:
-
LID — уникальный двухсимвольный код (
s2) - Название — для идентификации в админке
-
Домен —
SERVER_NAME, напримерpromo.example.com -
Папка сайта —
/если отдельный домен, или/promo/если подпапка -
Шаблон — можно назначить отдельный шаблон из
/bitrix/templates/или/local/templates/
2. Настройка веб-сервера. Для отдельного домена нужен vhost, указывающий на тот же DOCUMENT_ROOT:
server {
server_name promo.example.com;
root /home/bitrix/www; # тот же корень
# остальные директивы идентичны основному сайту
}
3. Привязка инфоблоков. В настройках каждого инфоблока — вкладка «Сайты». Отмечаем, на каких сайтах он доступен. Компоненты bitrix:news.list, bitrix:catalog.section автоматически фильтруют контент по текущему SITE_ID.
4. Шаблоны компонентов. Если на разных сайтах нужно разное отображение одного компонента — создаём шаблон с суффиксом сайта: .default для s1, promo для s2. В шаблоне сайта указываем нужный шаблон компонента.
5. Меню. Файлы меню (.menu.php) лежат в корне сайта или подпапке. При мультисайтовости с разными папками — каждый сайт автоматически берёт своё меню. При одном корне — используется компонент bitrix:menu с параметром MENU_CACHE_TYPE и проверкой SITE_ID.
Частые ошибки
Один шаблон на два сайта с разным дизайном. Не стоит городить if ($SITE_ID == 's2') в шаблоне — лучше создать отдельный шаблон. Условия множатся, код становится нечитаемым.
Кэш. Битрикс кэширует контент с привязкой к SITE_ID, но если вручную формировать ключ кэша в кастомных компонентах — нужно явно включать SITE_ID в $cacheId. Иначе пользователь на s2 увидит контент s1.
Почта. Почтовые шаблоны (b_event_message) привязываются к сайту. Если создали новый сайт, но не привязали шаблоны писем — уведомления о заказах, регистрации и т.п. не будут уходить. Проверяется в разделе Настройки → Почтовые события.
Настройка мультисайтовости занимает около одного рабочего дня при условии, что архитектура контента уже продумана — какие инфоблоки общие, какие раздельные, сколько шаблонов нужно.







