Дата последнего изменения: 17.06.2025
Для работы многосайтовости на разных доменах нам потребуется произвести настройку программного продукта. Настройку веб-сервера Apache, как и в случае с многосайтовостью на одном домене, должна произвести хостинговая компания.
Будем использовать для примера конфигурацию из двух сайтов:
Каждый сайт надо разместить в соответствующем каталоге, например:
/home/www/site1/ /home/www/site2/ Продукт устанавливается в один из сайтов. Чтобы ядро могло работать для обоих сайтов, необходимо создать символьные ссылки для сайта, в котором нет установленного ядра. Ссылки потребуются для папок /bitrix, /local и /upload. Эти папки являются общими для обоих сайтов, такова особенность архитектуры.
Ссылки можно создать двумя способами. Первый - классический, который рекомендовался компанией с самого начала. Второй - более поздний, считается более "красивым и изящным". В нем отсутствует шаг создания отдельной папки и переноса в нее ядра системы.
Первый вариант (зеленым цветом приведены примеры для установки на UNIX системы):
/home/www/site1/ /home/www/shared/, в котором будут располагаться общие для всех сайтов файлы:
/home/www/site1/bitrix/ в /home/www/shared/bitrix/:
/home/www/site1/upload/ в /home/www/shared/upload/:
/home/www/site1/local/ в /home/www/shared/local/:
/bitrix/ в каждом из сайтов:
/home/www/shared/ (это необходимо будет для работы системы обновлений и загрузки графических файлов) /home/www/site2/ При настройке многосайтовой конфигурации на UNIX, можно воспользоваться программным методом создания символьных ссылок:
<?
symlink("/virt/homes/forinsured/bitrix", "/virt/homes/forinsured/htdocs/bitrix");
symlink("/virt/homes/forinsured/upload", "/virt/homes/forinsured/htdocs/upload");
symlink("/virt/homes/forinsured/local", "/virt/homes/forinsured/htdocs/local");
?>
В ряде случаев, например если web сервер работает в chroot, необходимо делать относительные ссылки.
Пример:
/var/www/s1 - первый сайт
/var/www/s2 - второй сайт
/var/www/shared - папка с ядром системы
Заходим в /var/www/s1 и создаём ссылки:
ln -s ../shared/bitrix bitrix ln -s ../shared/upload upload ln -s ../shared/local localПереходим в
/var/www/s2 и выполняем те же команды.В этом варианте символьные ссылки создаются непосредственно в папке второго сайта.
/home/www/site1/ /home/www/site2/) скрипт, например, под именем symlink.php:<html>
<head><title>Создание ссылок на папки bitrix, local и upload</title></head>
<body>
<?
error_reporting(E_ALL & ~E_NOTICE);
@ini_set("display_errors",1);
if ($_POST['path'])
$path = rtrim($_POST['path'],"/\\");
else
$path = '../site1/www';
if ($_POST['create'])
{
if (preg_match("#^/#",$path))
$full_path = $path;
else
$full_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"))
{
if (symlink($path."/upload",$_SERVER['DOCUMENT_ROOT']."/upload"))
{
if (symlink($path."/local",$_SERVER['DOCUMENT_ROOT']."/local"))
echo "Символические ссылки удачно созданы";
else
$strError = 'Не удалось создать ссылку на папку local, обратитесь к администратору сервера';
}
else
$strError = 'Не удалось создать ссылку на папку upload, обратитесь к администратору сервера';
}
else
$strError = 'Не удалось создать ссылку на папку bitrix, обратитесь к администратору сервера';
}
else
$strError = 'Указанный путь не содержит папку bitrix';
}
else
$strError = 'Неверно указан путь или ошибка прав доступа';
if ($strError)
echo ''.$strError.'
Исходный путь: '.$full_path;
}
?>
<form method=post>
Путь к папке, содержащей папки bitrix, local и upload: <input name=path value="<?=htmlspecialchars($path)?>"><br>
<input type=submit value='Создать' name=create>
</form>
</body>
</html>
/home/www/site1/.site1/bitrix/admin. Откроется панель авторизации.После завершения работы скрипта наличие символических ссылок на папки /bitrix, /local и /upload в папке второго сайта можно проверить по появлению одноименных папок.
На этапе создания могут возникнуть проблемы:
В случае возникновения проблем с этим скриптом следует обратиться за помощью к хостеру.
Настройка сайтов выполняется в административном разделе системы на странице Настройки > Настройки продукта > Сайты > Список сайтов.
В строке первого сайта (www.site1.ru), в колонке действий выбираем команду Изменить и указываем в них:
Если DNS настроен таким образом, что ваш сайт отвечает на адрес http://site1.ru, то в поле Доменное имя желательно указывать без www. Можно перечислить в этом поле с новой строки любое число доменных имен, по которым вы хотите, чтобы отвечал сайт (или уже отвечает).
Важно иметь в виду, что значения, указанные в поле Доменное имя, используются продуктом для распространения в указанные домены информации о посетителях по технологии переноса посетителей. Поэтому крайне желательно указывать полный список доменов, по которым может ответить сайт.
Очень важно не указывать в списке доменов сайты, которые не работают на данном экземпляре продукта. Указанный неправильно или несуществующий домен может не только замедлить работу пользователей, но и фактически не позволит перенести данные в сайты, работающие не на общем экземпляре продукта.
Аналогично настроим параметры второго сайта (www.site2.ru/):
Обратите внимание, что для двух сайтов в параметре Папка сайта указано одинаковое значение: "/". Это связано с тем, что сайты обслуживаются разными "виртуальными серверами" (в терминологии Apache) у которых для размещения файлов использован разный каталог.
Также необходимо обратить внимание на параметр Путь к корневой папке веб-сервера для этого сайта. Для разных сайтов у него свое значение, взятое из параметра DocumentRoot настроек соответствующего "виртуального сервера" (см. ниже пример части файла httpd.conf настроек Apache).
Необходимо иметь в виду, что при организации многосайтовости по данному способу, вы можете использовать как виртуальные сервера одной установки Apache, так и просто разные установки Apache. Это справедливо для других веб-серверов: IIS, EServ и т.д.
/.htaccess и /404.php.При включенной Проактивной защите второй сайт должен быть обязательно добавлен в список разрешённых доменов.
Создайте файл .access.php c таким содержанием в корне второго сайта:
<? $PERM["/"]["*"]="R"; ?>
Для данного способа организации многосайтовости не требуется настраивать на индексной странице алгоритм выбора сайтов, как это делается при Псевдомногосайтовости, т.к. сайт будет однозначно определяться по полю Доменное имя.
Конфигурация готова к работе.
Поскольку ядро одно и база одна - административная панель для обоих сайтов будет одинаковая.
Технически, система допускает создание произвольного числа сайтов, работающих по этой схеме. В каждом из вновь создаваемых сайтов необходимо настроить веб-сервер и создать символическую ссылку.
Есть особенность в установке значений в поле Сортировка сайтов в списке. Если второй сайт работает на
поддомене
Пример:
site1.ru - первый сайт
site2.site1.ru - второй сайт (на поддомене первого сайта)
домена первого сайта, то он в списке сайтов должен иметь
меньшее значение.
Например, сортировка у первого сайта - 500, сортировка у второго сайта (работающего на поддомене первого) - 400.
В противном случае, или при равенстве значения в поле Сортировка, система будет открывать первый сайт при обращении ко второму.
Для случаев, когда сайты находятся на
разных доменах
Пример разных доменов:
site1.ru
site2.ru
или
разных поддоменах,
Пример разных поддоменов:
bus.site.ru
b24.site.ru
сортировка может быть любой.