Многосайтовость Битрикс

Кнопка

Здравствуйте, сегодня я расскажу о том, как сделать несколько сайтов на одной лицензии Битрикса (многосайтовость). Так же приведу практический пример настройки многосайтовости при использовании стандартной виртуальной машины от Битрикса VMBitrix.

Сразу хочу сказать о том, что при использовании любого способа реализации многосайтовости, попадающего под лицензию Bitrix, у ваших сайтов все равно будут общие:
- база данных
- административная часть сайта
- соответственно пользователи, их счета, заказы и т.д.

Многосайтовость можно реализовать двумя способами:
1) У сайтов один домен, но разные папки. Данный способ нужен, прежде всего, для создания языковых версий сайта. Адреса сайтов будут выглядеть так:

http://site.ru/ru

http://site.ru/en

2) У сайтов разные домены. Для обычного пользователя сайты будут полностью независимы. Адреса сайтов будут выглядеть так:

http://site.ru/

http://site1.ru/

Теперь практический пример. Итак, исходные условия:
- одна лицензия на два сайта
- необходимо сделать два сайта, чтобы они внешне никак не пересекались
- есть два домена site.ru и site1.ru
- лицензия работает на стандартной виртуальной машине от Битрикса VMBitrix (у меня версия 1.6)
- первый сайт лежит в папке «/var/www/»

Соответственно это попадает под второй способ реализации нескольких сайтов на одной лицензии. Первое, что мы сделаем, это создадим второй сайт в разделе настройки — список сайтов — добавить сайт.

- поставим галку активен
- введем название сайта site1.ru
- по умолчанию «нет галки»
- доменное имя site1.ru
- папка сайта у обоих сайтов «/»
- далее указываем кодировку и формат даты
- название веб сайта и url сервера site1.ru
- путь к корневой папке скажем «/var/www/site1″

Итак, у нас есть два сайта. Папка сайта у обоих «/», а путь к корневой папке у первого «/var/www/», а у второго «/var/www/site1″. Теперь мы скопируем файлы нового сайта в папку «/var/www/site1″, скопируем все за исключением папок «/bitrix» и «/upload». Далее заходим по SFTP в папку «/var/www/site1″ и создаем там символические ссылки («Link») на папки «/var/www/bitrix/» и «/var/www/upload».

Получаем два сайта, в первом лежат все файлы («/var/www/»), а во втором («/var/www/site1″) все, кроме bitrix и upload (но есть ссылки на эти папки у первого сайта). Теперь второй сайт должен быть доступен по адресу site.ru/site1.

Далее мы разместим в файле /etc/apache2/sites-enabled/000-default подобный код:

<VirtualHost *:8888>
	ServerAdmin webmaster@localhost
       ServerName site.ru
       ServerAlias www.site.ru

	DocumentRoot /var/www
	<Directory />
		Options FollowSymLinks
		AllowOverride None
	</Directory>
	<Directory /var/www/>
		Options Indexes FollowSymLinks MultiViews
		AllowOverride All
		DirectoryIndex index.php index.html index.htm
		Order allow,deny
		allow from all
	</Directory>

	ErrorLog /var/log/apache2/error.log

	# Possible values include: debug, info, notice, warn, error, crit,
	# alert, emerg.
	LogLevel warn

	CustomLog /var/log/apache2/access.log combined

    <IfModule mod_rewrite.c>
    #Nginx should have "proxy_set_header HTTPS YES;" in location
    RewriteEngine On
    RewriteCond %{HTTP:HTTPS} =YES
    RewriteRule .* - [E=HTTPS:on,L]
    </IfModule>

</VirtualHost>

<VirtualHost *:8888>
	ServerAdmin webmaster@localhost
       ServerName  site1.ru
       ServerAlias www.site1.ru

	DocumentRoot /var/www/site1
	<Directory />
		Options FollowSymLinks
		AllowOverride None
	</Directory>
	<Directory /var/www/site1/>
		Options Indexes FollowSymLinks MultiViews
		AllowOverride All
		DirectoryIndex index.php index.html index.htm
		Order allow,deny
		allow from all
	</Directory>

	ErrorLog /var/log/apache2/error.log

	# Possible values include: debug, info, notice, warn, error, crit,
	# alert, emerg.
	LogLevel warn

	CustomLog /var/log/apache2/access.log combined

    <IfModule mod_rewrite.c>
    #Nginx should have "proxy_set_header HTTPS YES;" in location
    RewriteEngine On
    RewriteCond %{HTTP:HTTPS} =YES
    RewriteRule .* - [E=HTTPS:on,L]
    </IfModule>

</VirtualHost>

Тут мы создали два виртуальных хоста. Для первого и второго сайта. Один будет работать с доменом site.ru, а второй с доменом site1.ru

Все, настройки закончены. Теперь надо сделать так, чтобы два домена site.ru и site1.ru ссылались на один и тот же ip виртуального сервера VMBitrix . Это чаще всего делается в личном кабинете, где вы покупали свои домены (вам нужно поправить так называемую «А запись», то есть соответствие между именем и IP-адресом).

Теперь при переходе по любому из доменов, пользователь попадает на один и тот же ip, а уже сервер на своей стороне определяет по какому домену пользователь попал к нему, и выдает соответствующий сайт. Для пользователя же внешне оба сайта никак не связаны.

Похожие посты:
  • События в 1С Битрикс
  • Сертификаты Битрикс
  • Напоминание пользователю о появлении товара (Битрикс)
  • Вывод на экран содержимого переменной (Битрикс).
  • Про $arResult и $arParams (Битрикс)
  • 4 комментария: Многосайтовость Битрикс

    1. Статья отличная, но сейчас уже 11 версия и возможно произошли изменения.
      я не нашел файл /etc/apache2/sites-enabled/000-default
      однако я нашел файл /etc/httpd/conf.d/default.conf
      вносим изменения те же, только сверху не забываем указать
      NameVirtualHost *:8888
      Иначе httpd работать будет а вот многосайтовости не будет.
      при запуске будет ошибка:
      [warn] _default_ VirtualHost overlap on port 8888, the first has precedence
      Мой пример:

      Listen 8888

      NameVirtualHost *:8888

      ServerAdmin webmaster@site.ru
      ServerName site.ru
      ServerAlias http://www.site.ru
      DocumentRoot /home/bitrix/www

      Options FollowSymLinks
      AllowOverride None

      Options Indexes FollowSymLinks MultiViews
      AllowOverride All
      DirectoryIndex index.php index.html index.htm
      Order allow,deny
      allow from all

      ErrorLog logs/error_log
      # Possible values include: debug, info, notice, warn, error, crit,
      # alert, emerg.
      LogLevel warn

      ### CustomLog logs/access_log combined

      #Nginx should have «proxy_set_header HTTPS YES;» in location
      RewriteEngine On
      RewriteCond %{HTTP:HTTPS} =YES
      RewriteRule .* – [E=HTTPS:on,L]

      ServerAdmin webmaster@site2.com
      ServerName site2.com
      ServerAlias http://www.site2.com

      DocumentRoot /home/bitrix/www/site2

      Options FollowSymLinks
      AllowOverride None

      Options Indexes FollowSymLinks MultiViews
      AllowOverride All
      DirectoryIndex index.php index.html index.htm
      Order allow,deny
      allow from all

      ErrorLog logs/error_log
      # Possible values include: debug, info, notice, warn, error, crit,
      # alert, emerg.
      LogLevel warn

      ### CustomLog logs/access_log combined

      #Nginx should have «proxy_set_header HTTPS YES;» in location
      RewriteEngine On
      RewriteCond %{HTTP:HTTPS} =YES
      RewriteRule .* – [E=HTTPS:on,L]

      Автору спасибо за статью.

    2. А вы сами то пробовали скопировать все кроме [bitrix] и [upload] на новый хост

    3. Привет всем! в битриксе недавно , у меня проблема, есть сайт и 5 доменов(!) , нужно сделать 3 языковые версии + чтоб в зависимости от домена кидало на определенную языковую версию. как это? возможно ли это сделать в рамках одной лицензии без покупки купонов?

    4. Очень коварна галка «по умолчанию» в настройках сайта, два дня не мог понять, почему вместо второго сайта открывается первый.

      И ещё важно заходить в битрикс именно через site1.ru/bitrix , site2.ru/bitrix , а не через ip сервера.

    Добавить комментарий для 9565598
    Отменить ответ

    Подтвердите, что Вы не бот — выберите человечка с поднятой рукой: