Налаштування прив'язки доменів до сайтів 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







