Настройка привязки доменов к сайтам 1С-Битрикс
Мультисайтовость в Битриксе — одна из ключевых возможностей, позволяющая обслуживать несколько сайтов из одного ядра. Привязка домена к сайту — первый шаг, и здесь есть нюансы, которые при неправильной настройке приводят к тому, что все домены показывают один и тот же сайт или редиректят на неверный.
Как Битрикс определяет текущий сайт
При каждом запросе ядро Битрикс читает таблицу b_lang и ищет запись, у которой поле SERVER_NAME совпадает с HTTP-заголовком Host входящего запроса. Найденный LID (двубуквенный код сайта) используется далее для всех операций: выбора шаблона, инфоблоков, языка и т.д.
SELECT LID, DIR, NAME, SERVER_NAME FROM b_lang WHERE ACTIVE = 'Y';
Если SERVER_NAME не совпадает ни с одной записью — Битрикс использует первый сайт по умолчанию или возвращает ошибку в зависимости от конфигурации. Это и есть причина, когда «все домены показывают один сайт».
Добавление домена к сайту через администратор
В /bitrix/admin/site_edit.php?LID=<код_сайта> заполняется поле «Доменное имя сервера» (SERVER_NAME). Здесь вписывается домен без http:// и без слеша: example.com.
Если сайт должен работать и на www.example.com, и на example.com — выберите один из них как основной, второй настройте как редирект на уровне веб-сервера (nginx/Apache), не через Битрикс. Не пытайтесь указать оба в SERVER_NAME — поле не поддерживает несколько значений.
Поле DIR — это путь к директории сайта относительно корня. Для основного сайта — /. Для второго сайта на том же сервере — /second/ или тот же /, если сайты разделяются только по домену.
Конфигурация веб-сервера
Битрикс отвечает за маршрутизацию внутри своего ядра, но веб-сервер должен принимать запросы к нужным доменам и передавать их в корень Битрикса.
Nginx: для каждого домена отдельный server {} блок или общий блок с server_name example.com example2.com. Документ-рут один и тот же — корень Битрикс-инсталляции.
server {
listen 80;
server_name example.com www.example.com;
root /var/www/bitrix;
# ... стандартная конфигурация Битрикс
}
HTTPS: для каждого домена нужен отдельный SSL-сертификат или wildcard/multi-domain сертификат. Let's Encrypt выдаёт сертификаты на несколько доменов через certbot --domains example.com,example2.com.
Маскировка домена и URL-синонимы
Ситуация: есть основной домен main-shop.ru и партнёрский домен partner-shop.ru, который должен показывать тот же сайт, но с другим брендингом. В Битриксе это реализуется через проверку $_SERVER['HTTP_HOST'] в init.php или в шаблоне сайта с условным подключением другого шаблона — это не стандартная мультисайтовость, а кастомное решение.
Стандартная мультисайтовость предполагает разные шаблоны, разные языки и разный контент для каждого сайта. Если нужен один контент на разных доменах — используйте canonical URL в <head> для указания основного домена и избегания дублирования в SEO.
Переезд сайта на новый домен
При смене домена обновляете SERVER_NAME в b_lang, затем проверяете:
- Настройки
$_SERVER['HTTP_HOST']в/bitrix/.settings.php(если прописан явно) - URL сайта в настройках модулей:
COption::GetOptionString("main", "server_name")— в некоторых версиях хранится там - Ссылки в контенте инфоблоков — абсолютные ссылки вида
http://old-domain.ru/...придётся заменять через SQL-запросы кb_iblock_element_prop_s*иb_iblock_element - Email-шаблоны в модуле
main— часто содержат захардкоженные URL







