1С-Битрикс многосайтовость на одном домене
Рассмотрим общую информацию об организации многосайтовости 1С-Битрикс на одном домене, и некоторые нюансы, которые не освещены в официальной документации.
Многосайтовость такого типа часто используется для создания мультиязычного сайта. Обычно эти сайты имеют урлы двух видов : site.ru , site.ru/en/ или site.com/ru/ , site.com/en/
Основная идея многосайтовости в Битриксе это 1 сайт - 1 папка со вложенным в неё содержимым сайта. Т.е. структура может выглядеть либо так (1):
/www/s1/ - первый сайт /www/s2/ - второй сайт
Либо сяк (2):
/www/s1/ - первый сайт, /www/s1/s2 – второй сайт.
DocumentRoot веб сервера должен смотреть в корневую папку. В случае (1) это /www/ во втором случае (2) это /www/s1/
Рассмотрим второй случай в плане настроек административной части. Идем в настройки сайтов (Настройки > Настройки продукта > Сайты > Список сайтов)
Выбираем "Изменить" параметры сайта №1 и указываем в них:
Сайт №1:
Название: site1 Доменное имя: оставить пустым Папка сайта: /s1/ Название сайта: Корпоративный сайт компании "Название компании" URL сервера:www.site.com/s1 Путь к корневой папке веб-сервера для этого сайта: оставить пустым
В параметре Папка сайта необходимо указывать путь относительно корня к каталогу в котором расположена публичная часть сайта. Путь к корневой папке веб-сервера для этого сайта не используется в данном способе настройки многосайтовости и должен быть пустым для всех сайтов.
Аналогично настроим параметры сайта №2:
Название: site2 Доменное имя: оставить пустым Папка сайта: /s2/ Название сайта: Интернет-магазин компании "Название компании" URL сервера:www.site.com/s2 Путь к корневой папке веб-сервера для этого сайта: оставить пустым
Теперь перейдем к некоторым нюансам первого случая о которых не пишут:
urlrewrite.php для этих всех сайтов один общий и лежать он должен в DocumentRoot. т.е. в /www/. Если вы разложите свои urlrewrite по папкам /www/s1/ и /www/s2/ - это работать не будет.
Аналогично с этим и 404-я страница должна быть там же в корневой папке. Для урлов вида www.site.com/s1/non_existing_page и www.site.com/s2/non_existing_page вы можете определить обработку 404-й странциы которыми сможете показывать 404.php из любого места (например конкретных папкок сайтов), но если у вас будет урл вида www.site.com/non_existing_site/ - вам не останется ничего другого как показать страницу /www/404.php
robots.txt так же должен быть там, в корневой папке. Ну и если у вас корневого сайта нет как такового. т.е. в случае site.com/ru/ , site.com/en/ у вас нет урла site.com - не забывайте делать редиректы из index.php корневой папки.
В многосайтовости случая (2) всё более очевидно, все эти файлы органично вписываются в вышестоящий по иерархии сайт s1.
{{ 'Comments (%count%)' | trans {count:count} }}
{{ 'Comments are closed.' | trans }}