Многосайтовость
Bitrix Framework позволяет запускать несколько сайтов на одной установке. Сайты размещают в подпапках одного домена или на разных доменах.
Многосайтовость подходит для управления отдельными, но связанными проектами. Все сайты используют одно ядро, общую базу данных и единый набор модулей.
Система поддерживает неограниченное количество сайтов. Исключение — редакция Старт, в ней можно создать два сайта.
По лицензионному соглашению нельзя размещать на одной лицензии независимые копии системы с отдельным ядром или отдельной базой данных, даже если они находятся на одном сервере.
Подробнее о том, что такое сайт в Bitrix Framework и как им управлять, читайте в статье Сайты.
Когда использовать многосайтовость
При создании нескольких сайтов выберите архитектуру: многосайтовость или отдельные установки.
Многосайтовость подходит:
-
когда все сайты обслуживает одна команда разработки и администрирования,
-
сайты связаны по содержанию — например, языковые версии одного проекта или корпоративный сайт и интернет-магазин,
-
система сохраняет авторизацию при переходе между сайтами.
Отдельные установки нужны:
-
когда разные команды поддерживают отдельные сайты,
-
данные одного сайта нельзя показывать участникам другого,
-
посетители воспринимают сайты как независимые проекты.
Как система различает сайты
Система определяет текущий сайт по двум параметрам из настроек: Доменное имя и Папка сайта.

По доменному имени
При запросе система сравнивает домен из адресной строки браузера с доменами, которые указаны в настройках сайтов.
Если указали site.ru, система считает принадлежащими этому сайту все поддомены: www.site.ru, docs.site.ru, m.site.ru.
Укажите домен без www. Это упрощает настройку и избавляет от дублирования.
Можно перечислить несколько доменов — по одному на строку. Например, если сайт должен отвечать на site.ru и на my-site.ru, укажите оба адреса.
Не добавляйте домены, которые не относятся к текущей установке Bitrix Framework. Это замедлит работу и нарушит передачу данных между сайтами.
Если ни один сайт не соответствует домену, система открывает сайт по умолчанию.
По папке сайта
Если доменные имена не указаны или совпадают у нескольких сайтов, система выбирает сайт по пути в адресе страницы.
В поле Папка сайта задайте путь относительно корня сайта: /, /ru/, /shop/. Это не путь в файловой системе сервера, а часть URL после домена.
Например, при открытии example.ru/ система покажет сайт с папкой /, при открытии example.ru/shop/ система покажет сайт с папкой /shop/.
Система не учитывает номер порта в адресе. Нельзя настроить многосайтовость на одном домене с разными портами.
Настроить многосайтовость
Bitrix Framework поддерживает два режима многосайтовости.
-
На одном домене — сайты разделяют по подкаталогам, чтобы структура файлов не пересекалась. Каждый сайт размещают в отдельном подкаталоге внутри корневого каталога.
-
На разных доменах — ядро продукта устанавливают в папку одного из сайтов, для остальных сайтов настраивают символические ссылки. Технологию можно реализовать на разных доменах и на поддоменах.
Настройка отличается способом организации файловой структуры и параметров сайта.
Если используете BitrixVM, не редактируйте конфигурационные файлы вручную. В меню виртуальной машины запустите мастер 8. Configure pool sites > 1. Create a site.
Сравнить режимы
Выбор зависит от структуры проекта и возможностей хостинга. Таблица помогает оценить различия по ключевым параметрам.
|
Критерий |
На одном домене |
На разных доменах |
|
URL-структура |
|
|
|
Файловая структура |
Все сайты в одной папке |
Каждый сайт в отдельной папке с символическими ссылками |
|
Виртуальные хосты |
Один виртуальный хост |
Отдельный виртуальный хост для каждого сайта |
|
SSL-сертификат |
Один сертификат на весь домен |
Можно использовать разные сертификаты |
|
SEO |
Общее SEO-ядро, возможны дубли |
Независимое SEO для каждого сайта |
|
Сложность настройки |
Простая настройка |
Нужно настроить Apache и символические ссылки |
Если сайты логически связаны и используют общий контент, выбирайте многосайтовость на одном домене.
Если нужны независимые URL, четкое разделение, выбирайте многосайтовость на разных доменах.
На одном домене
В этом режиме все сайты размещаются в подпапках одного домена. Например:
-
example.ru/— корпоративный сайт, -
example.ru/shop/— интернет-магазин.
Создать папки для сайтов
-
Создайте общий корневой каталог, например,
/var/www/bx-sites/. -
Установите Bitrix Framework в этот каталог.
-
Создайте подпапку для второго сайта —
/var/www/bx-sites/shop/. -
Поместите публичные файлы интернет-магазина в папку
/var/www/bx-sites/shop/.
Настроить сайты в административном разделе
-
Откройте страницу Настройки > Настройки продукта > Сайты > Список сайтов.
-
Отредактируйте сайт, который создали при установке продукта. Проверьте настройки:
-
Папка сайта —
/, -
Доменное имя — пустое поле,
-
Путь к корневой папке веб-сервера для этого сайта — пустое поле,
-
URL сервера —
example.ru.
-
-
Нажмите Добавить сайт.
-
Настройте параметры второго сайта:
-
ID —
shop, -
Название — Интернет-магазин,
-
Доменное имя — пустое поле,
-
Папка сайта —
/shop/, -
Путь к корневой папке веб-сервера для этого сайта — пустое поле,
-
Название веб-сайта — Интернет-магазин,
-
URL сервера —
example.ru/shop/.Остальные параметры настройте стандартным способом, как описано в статье Сайты.
-
Убедитесь, что у каждого сайта в поле Папка сайта указана уникальная папка. Иначе система не сможет определить, какой сайт показывать.
В административной части оба сайта отображаются в одной файловой структуре:
-
/shop/— папка второго сайта, -
остальные папки — ядро и папки первого сайта.

Настроить веб-сервер Apache
Убедитесь, что в конфигурационном файле httpd.conf веб-сервера Apache настроен один виртуальный хост:
<VirtualHost *:80>
DocumentRoot "/var/www/bx-sites"
ServerName example.ru
ServerAlias www.example.ru
</VirtualHost>
Дополнительные настройки выполнять не нужно.
На разных доменах
Режим применяют, когда сайты должны быть доступны по разным адресам. Например:
-
company.ru— корпоративный сайт, -
shop.company.ru— интернет-магазин.
Установить систему и создать папки
-
Создайте отдельную папку для каждого сайта:
-
/var/www/site-main/— для первого сайта, -
/var/www/site-shop/— для второго.
-
-
Установите Bitrix Framework в папку первого сайта —
/var/www/site-main/.
Настроить сайты
-
Откройте страницу Настройки > Настройки продукта > Сайты > Список сайтов.
-
Отредактируйте основной сайт, который создали при установке продукта. Проверьте настройки:
-
Папка сайта —
/, -
Доменное имя —
company.ru, -
Путь к корневой папке веб-сервера для этого сайта —
/var/www/site-main/, -
URL сервера —
company.ru.
-
-
Нажмите Добавить сайт.
-
Укажите параметры второго сайта:
-
ID —
s2, -
Название — Интернет-магазин,
-
Доменное имя —
shop.company.ru, -
Папка сайта —
/, -
Путь к корневой папке веб-сервера для этого сайта —
/var/www/site-shop/, -
Название веб-сайта — Интернет-магазин,
-
URL сервера —
shop.company.ru.
Остальные параметры настройте стандартным способом, как описано в статье Сайты.
-
Каждый сайт отображается отдельно в файловой структуре:

Добавить символические ссылки
Чтобы сайты на разных доменах использовали общее ядро, настройте символические ссылки. Это специальные файлы, которые указывают на фактическое расположение папок.
Не копируйте папки /bitrix/, /upload/, /local/. Это действие вызывает проблемы при обновлении и нарушает лицензию на продукт.
Выберите один из двух вариантов в зависимости от структуры каталогов и прав доступа.
Вариант 1. Создайте отдельный каталог для ядра и общих файлов.
-
Создайте каталог для общих файлов, например,
/home/www/shared/.mkdir /home/www/shared -
Переместите ядро и ключевые папки из первого сайта в общий каталог:
mv /home/www/site-main/bitrix /home/www/shared/bitrix mv /home/www/site-main/upload /home/www/shared/upload mv /home/www/site-main/local /home/www/shared/local -
Создайте ссылки на общие папки в корне каждого сайта. Выполните команды от имени пользователя и группы веб-сервера. Для первого сайта
/home/www/site_main/:ln -s /home/www/shared/bitrix /home/www/site-main/bitrix ln -s /home/www/shared/upload /home/www/site-main/upload ln -s /home/www/shared/local /home/www/site-main/localДля второго сайта
/home/www/site_shop/:ln -s /home/www/shared/bitrix /home/www/site_shop/bitrix ln -s /home/www/shared/upload /home/www/site_shop/upload ln -s /home/www/shared/local /home/www/site_shop/local -
Проверьте, что веб-сервер имеет права на запись в
/home/www/shared/. Это необходимо для установки обновлений и загрузки файлов. -
Разместите уникальные файлы второго сайта в папке
/home/www/site_shop/.
Вариант 2. Создайте ссылки напрямую из корня второго сайта в каталоги первого.
-
Создайте файл
symlink.phpв корне второго сайта/home/www/site_shop/.<html> <head><title>Создание символических ссылок</title></head> <body> <? error_reporting(E_ALL & ~E_NOTICE); @ini_set("display_errors", 1); $path = rtrim($_POST['path'] ?? '../site_main', "/\\"); $strError = ''; if ($_POST['create']) { // Формируем абсолютный путь $full_path = preg_match("#^/#", $path) ? $path : realpath($_SERVER['DOCUMENT_ROOT'].'/'.$path); if (file_exists($_SERVER["DOCUMENT_ROOT"]."/bitrix")) { $strError = "В текущей папке уже существует папка bitrix."; } elseif (is_dir($full_path)) { if (is_dir($full_path."/bitrix")) { // Создаем ссылки if (!symlink($path."/bitrix", $_SERVER["DOCUMENT_ROOT"]."/bitrix")) { $strError = 'Не удалось создать ссылку на папку bitrix.'; } elseif (!symlink($path."/upload", $_SERVER["DOCUMENT_ROOT"]."/upload")) { $strError = 'Не удалось создать ссылку на папку upload.'; } elseif (!symlink($path."/local", $_SERVER["DOCUMENT_ROOT"]."/local")) { $strError = 'Не удалось создать ссылку на папку local.'; } else { echo "<font color='green'>Символические ссылки успешно созданы.</font>"; } } else { $strError = 'Указанный путь не содержит папку bitrix.'; } } else { $strError = 'Неверно указан путь или ошибка прав доступа.'; } if ($strError) { echo '<font color="red">' . $strError . '</font><br>Путь: ' . htmlspecialchars($full_path); } } ?> <form method="post"> Путь к папке с ядром:<br> <input type="text" name="path" value="<?=htmlspecialchars($path)?>" size="50"><br><br> <input type="submit" value="Создать ссылки" name="create"> </form> </body> </html> -
Проверьте права доступа. Скрипт
symlink.phpдолжен принадлежать пользователю, от которого работает веб-сервер. -
Откройте в браузере
http://shop.company.ru/symlink.php, гдеshop.company.ru— это доменное имя второго сайта. Укажите путь к корневой папке первого сайта и нажмите Создать ссылки. -
Проверьте, что в корне второго сайта появились символические ссылки на папки
bitrix,uploadиlocal. Удалите служебный файлsymlink.php. -
Откройте
http://shop.company.ru/bitrix/admin/и войдите под учетной записью администратора первого сайта.
Добавить служебные файлы
В корень второго сайта /var/www/site-shop/ добавьте следующие файлы:
-
.htaccess— управляет маршрутизацией, правилами доступа и настройками сервера. Без него страницы сайта могут не открываться или возвращать ошибку 404. Скопируйте его с первого сайта. -
404.php— отображает страницу при ошибке404. Если файла нет, браузер покажет стандартную ошибку сервера. Скопируйте его с первого сайта и адаптируйте текст под второй сайт. -
.access.php— ограничивает доступ к публичной части сайта. Добавьте файл, если он есть на основном сайте. Файл содержит строку, которая разрешает всем пользователям просматривать корень сайта.<? $PERM["/"]["*"]="R"; ?>
Настроить виртуальные хосты
Добавьте настройки виртуальных хостов в конфигурационный файл Apache httpd.conf.
-
Укажите для каждого сайта собственный
DocumentRoot. -
Задайте основной домен в параметре
ServerName. -
Добавьте
ServerAlias *.company.ru, чтобы сайт отвечал на все поддомены:www,mиshop.
Пример конфигурации для двух сайтов:
<VirtualHost *:80>
DocumentRoot "/var/www/site-main"
ServerName company.ru
ServerAlias *.company.ru
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "/var/www/site-shop"
ServerName shop.company.ru
</VirtualHost>
После настройки проверьте, что оба сайта открывают административную панель по пути /bitrix/admin/ и используют одну базу данных.
Если используете разные IP-адреса, укажите их вместо *:
<VirtualHost 192.168.0.1:80>
ServerName company.ru
DocumentRoot "/var/www/site-main"
</VirtualHost>
<VirtualHost 192.168.0.2:80>
ServerName shop.company.ru
DocumentRoot "/var/www/site-shop"
</VirtualHost>
После изменения конфигурации перезапустите Apache.
Чтобы разделить информацию без доступа к файлу httpd.conf, выполните три действия.
-
Создайте в корне второго сайта папку
/bitrix_personal/. -
Сделайте символические ссылки на
/bitrix/php_interface/и/bitrix/templates/ -
Добавьте в
.htaccessкаждого сайта:SetEnv BX_PERSONAL_ROOT /bitrix/bitrix_personal
Это позволяет использовать индивидуальные шаблоны и настройки без изменения глобальной конфигурации сервера.
Настроить сортировку сайтов
Если один сайт работает на поддомене другого, укажите для поддомена меньшее значение сортировки. Это гарантирует, что при запросе к поддомену откроется второй сайт, а не основной.
Примеры значений сортировки:
-
shop.company.ru—400, -
company.ru—500.
Для независимых доменов, например, company.ru и onlineshop.ru, порядок сортировки не важен.
Учитывать особенности режима
Проактивная защита. Если в системе включена Проактивная защита, добавьте второй домен в список разрешенных на странице Настройки > Проактивная защита > Хосты/домены.
Кеширование. HTML-кеширование не работает в режиме многосайтовости на разных доменах. Используйте Композитный сайт.
Как объекты зависят от сайтов
В многосайтовой системе одни данные общие для всех сайтов, другие принадлежат только одному. Учитывайте это при проектировании структуры или переносе данных.
Примеры данных, которые всегда привязаны к конкретному сайту и не могут быть общими:
-
разделы и страницы, например
/about/или/company/index.php, -
заказы интернет-магазина,
-
налоги,
-
правила работы с корзиной,
-
файлы
robots.txtиsitemap.xml, -
A/B-тестирование,
-
триггерные рассылки,
-
почтовые ящики и сервисы.
Следующие данные поддерживают привязку к одному или нескольким сайтам:
-
информационные блоки,
-
баннерная реклама,
-
опросы и веб-формы,
-
учебные курсы,
-
типы плательщиков и цен,
-
отчеты по товарам и заказам.
Статистика собирается по каждому сайту отдельно, но права на просмотр разделить невозможно. Если пользователь имеет доступ к модулю Веб-аналитика, он видит данные по всем сайтам.
Обеспечить сквозную идентификацию пользователей
Когда посетитель заходит на один сайт многосайтовой системы, он получает идентификаторы для статистики, корзины, авторизации и других модулей. Данные сохраняются в cookie, которые привязаны к домену сайта.
Если посетитель переходит на второй сайт с другим доменом, браузер не передает cookie первого сайта — это ограничение безопасности. Второй сайт считает посетителя новым.
Чтобы решить эту задачу, Bitrix Framework использует технологию UserMultiSiteTransfer. Она распространяет cookie на другие домены с помощью JavaScript. Это происходит автоматически при подключении функции CMain::ShowSpreadCookieHTML().
Чтобы активировать технологию, включите две настройки на странице Настройки > Настройки продукта > Настройки модулей > Главный модуль.
-
Распространять куки на все домены — включает
UserMultiSiteTransferи позволяет распознавать анонимных посетителей на всех сайтах. -
Распространять авторизацию на все домены — обеспечивает автоматический вход зарегистрированных пользователей на всех сайтах после авторизации на одном.

Обе настройки работают, если:
-
все сайты используют одну установку Bitrix Framework,
-
в настройках каждого сайта в поле Доменное имя перечислены все домены.
В результате посетитель остается одним и тем же пользователем при переходе между сайтами.
Решить проблему дублирования PHPSESSID
Bitrix Framework не поддерживает размещение независимых установок на поддоменах одного родительского домена. Например:
-
site.ru— первая установка с 1С-Битрикс: Управление сайтом, -
crm.site.ru— вторая установка с 1С-Битрикс24.
Обе установки используют собственные ядра и разные базы данных, но работают в рамках одного домена второго уровня.
Если в настройках сайта site.ru заполнено поле Доменное имя, система устанавливает cookie для всех поддоменов *.site.ru. В эти cookie входит идентификатор сессии PHPSESSID.
Когда пользователь переходит с site.ru на crm.site.ru, браузер отправляет идентификатор сессии от первой установки. Вторая установка пытается использовать чужой PHPSESSID. Это приводит к сбоям авторизации, сбросу корзины и другим ошибкам.
Настроить установки без многосайтовости
Если каждая установка содержит только один сайт и не требует сквозной авторизации между поддоменами, очистите поле Доменное имя в настройках site.ru.
-
Перейдите на страницу Настройки > Настройки продукта > Сайты > Список сайтов.
-
Откройте сайт на редактирование.
-
Удалите значение из поля Доменное имя и сохраните изменения.
Повторите эту операцию для второй установки — crm.site.ru.
После изменения пользователи должны выйти из системы и войти заново. Это обновит cookie и ограничит их область действия конкретным доменом.
Если авторизация не восстанавливается, временно добавьте в файл /bitrix/php_interface/dbconn.php:
setcookie("PHPSESSID", "", time() - 3600, '/', '.site.ru');
После успешного входа удалите эту строку.
Настроить установки с многосайтовостью
Если одна из установок использует многосайтовость на разных доменах, поле Доменное имя оставьте заполненным. Система на его основе обеспечивает сквозную авторизацию между сайтами одной установки.
В этом случае невозможно изолировать cookie через настройки. Единственное корректное решение — использовать для второй установки домен, который не связан с родительским доменом первой установки.
Подходящие варианты: crm-site.ru, crm.company.ru, mycrm.ru.
Такая архитектура исключает конфликт сессий и обеспечивает стабильную работу обеих систем.
Вынести раздел на поддомен
Раздел сайта можно вынести на отдельный поддомен и не создавать второй сайт.
Пример: forum.example.ru вместо example.ru/forum/.
Для этого используйте элементы конфигурации многосайтовости на разных доменах.
Настройте DNS-запись для поддомена в панели управления доменом: A-запись на IP-адрес сервера или CNAME на основной домен.
Настроить веб-сервер
-
Создайте отдельную папку для поддомена —
/var/www/forum/. -
Настройте виртуальный хост Apache.
<VirtualHost *:80> ServerName forum.example.ru DocumentRoot "/var/www/forum" </VirtualHost> -
Добавьте символические ссылки.
ln -s /var/www/example/bitrix /var/www/forum/bitrix ln -s /var/www/example/upload /var/www/forum/upload
Настроить шаблон сайта
Примените шаблон дизайна для поддомена.
-
Перейдите на страницу Настройки > Настройки продукта > Сайты > Список сайтов.
-
Откройте форму редактирования сайта.
-
В разделе Шаблон сайта добавьте новое условие:
-
Шаблон — выберите шаблон из списка,
-
Тип условия — укажите
Выражение PHP, -
Условие — введите
$_SERVER['HTTP_HOST'] == 'forum.example.ru'.
-
Настроить меню
Меню основного сайта содержит относительные пути и не работает в поддомене.
Чтобы настроить меню, используйте абсолютные пути или создайте отдельное меню для поддомена.
Как создать языковые версии сайта
Языковые версии сайта можно создать двумя способами: как папки внутри одного сайта или как отдельные сайты.
Если сайт содержит только текстовые страницы, новости или каталог, достаточно использовать папки.
Если нужен раздельный интернет-магазин, разные валюты, рекламные кампании или аналитика, создавайте отдельные сайты.
Папки внутри одного сайта
Разместите контент для каждого языка в отдельной папке: example.ru/ru/, example.ru/en/.
Для каждого языкового раздела можно задать отдельный шаблон сайта. В настройках шаблона укажите условие для папки и введите путь, например /ru/.
Все данные остаются общими для всех языковых разделов.
-
Статистика собирается по всему сайту, а не по каждому языку отдельно.
-
Корзина и заказы общие. Когда пользователь добавит товар на русском языке, он увидит его в корзине на английской версии,
-
Настройки валют, правила работы с корзиной и доставки применяются ко всему сайту.
Отдельные сайты на разных языках
Создайте независимые сайты с разными доменами или поддоменами: site.ru, site.com.
Способ дает полный контроль над данными:
-
раздельная статистика,
-
разные валюты и правила доставки,
-
независимые рекламные кампании и веб-формы,
-
отдельные региональные настройки: формат даты, часовой пояс.
Решить типовые задачи
Настройка многосайтовости включает типовые операции: временное закрытие сайта, подключение переключателя сайтов, резервное копирование и удаление.
Закрыть только один сайт
В настройках главного модуля можно отключить публичную часть всех сайтов сразу. Чтобы закрыть только один сайт, выполните три шага.
-
Создайте файл
/bitrix/php_interface/siteid/init.php, гдеsiteid— идентификатор сайта, например,s1. -
Добавьте код:
<?php AddEventHandler("main", "OnBeforeProlog", "MyOnBeforePrologHandler", 50); function MyOnBeforePrologHandler() { global $USER; if (!is_object($USER)) { $USER = new CUser(); } if (!$USER->IsAdmin()) { include($_SERVER["DOCUMENT_ROOT"] . "/coming-soon/underconstruction.html"); die(); } } -
Создайте файл
/coming-soon/underconstruction.htmlс информацией для посетителей.
Такой способ отключает выполнение заданий cron для сайта.
Подключить компонент выбора сайта
Чтобы посетители могли переходить между сайтами, используйте компонент Выбор сайта bitrix:main.site.selector. Разместите его в шаблоне сайта.
Шаблон компонента можно скопировать и изменить под дизайн проекта.
Подробнее о работе с компонентами читайте в статье Компоненты.
Выполнить резервное копирование
Многосайтовость на одном домене. Резервную копию создают стандартным способом — как для обычного сайта. Архив включает все сайты, потому что они находятся в одной папке.
Многосайтовость на разных доменах. В архив можно включить любые сайты. База данных архивируется всегда целиком. После распаковки нужно перенести публичные папки сайтов и восстановить символические ссылки.
Подробнее о создании архивов читайте в статье Резервное копирование.
Удалить сайт
Система не позволяет удалить сайт, если к нему привязаны другие объекты. Перед удалением убедитесь, что удалены или отвязаны:
-
информационные блоки,
-
заказы и типы плательщиков,
-
форумы, блоги, рассылки,
-
справочники техподдержки,
-
учебные курсы,
-
почтовые ящики и сервисы.
Если сайт содержит ядро Bitrix Framework, а другие сайты используют символические ссылки на него:
-
Перенесите папку
/bitrix/в папку второго сайта. Также перенесите/local/и/upload/, если они содержат общие данные. -
Замените символические ссылки реальными каталогами.
-
Проверьте, что второй сайт работает.
Теперь можно удалить сайт.
-
Откройте страницу Настройки > Настройки продукта > Сайты > Список сайтов.
-
В меню сайта нажмите Удалить.

Если удаление невозможно, система покажет ошибку с указанием модуля.
Пример: Ошибка при удалении в CIBlock::OnBeforeLangDelete (iblock) — остались привязанные инфоблоки.