.NET Forge CMS

english russian
Привет, Гость! Войти Регистрация

Многосайтовость в .NET Forge CMS

Многосайтовость в .NET Forge CMS

В релизе .NET Forge 6.0 была представлена технология многосайтовости. При помощи нее на одной копии можно создать несколько сайтов с разными доменными именами. Все сайты должны работать в пределах одного приложения. Таким образом, многосайтовость может работать и на виртуальном хостинге.

Настройка многосайтовости

В первую очередь нужно привязать домены к приложению. В случае выделенного сервера это делается в IIS Manager:

Аналогично можно настроить виртуальный хостинг

После настройки IIS необходимо создать структуру папок. Для каждого сайта создаем отдельную папку (site1, site2, site3). В корне сайта оставляем папки bin, bitrix, uploads, app_code, app_data, файлы web.config, global.asax и.т. д

Затем создаем собственно сайты через соответствующий интерфейс в Панели управления. На странице настройки сайта появился новый параметр «Перенаправить на папку» - все запросы к этому сайту будут направляться в эту папку.

Обязательно заполняем следующие параметры:

Доменное имя – вписываем доменное имя сайта - это необходимо для того чтобы правильно распознать текущий сайт

Перенаправить на папку – вписываем имя папки в которой располагаются файлы сайта – в эту папку будут перенаправляться запросы при обращении к сайту

URL сервера – тоже вписываем доменное имя – это нужно, чтобы правильно формировать ссылки на другие сайты

Все, теперь можно открыть страницу Решения и установить в созданный сайт свежее решение

Кросс-доменная аутентификация

Для того, чтобы пользователи, входя на сайт автоматически входили на сайты с других доменов, в настройки главного модуля добавлена опция «Распространять аутентификацию на все домены»

Для разработчиков

Внедрение механизма многосайтовости потребовало изменить работу с виртуальными путями. Возникла некоторая двойственность: например мы запрашиваем страницу по виртуальному пути ~/folder/page.aspx, а на деле выполняется страница ~/site/folder/page.aspx. И некоторый код продукта интерпретирует эти пути как клиентские (т.е. которые будут выводиться в HTML, преобразовываться в абсолютные) – например, меню или ссылки в настройках компонентов. Другая же часть кода считает их серверными путями к реальным файлам (например, страница редактирования файлов).

Поэтому, при разработке функционала, который будет работать в многосайтовой среде, необходимо отдавать себе отчет, как именно будет этот путь интерпретироваться. Это вынужденная мера.


В помощь разработчику созданы специальные методы у класса BXSite

  • GetSitesForPath – возвращает список соответствующих серверному пути сайтов (в типовом случае это один сайт)
  • GetUrlForPath – формирует URL для серверного пути. URL может получиться как с доменным именем, так и без него – зависит от того, лежит ли путь в контексте текущего сайта или нет.

Дополнительно есть вспомогательный класс BXSiteRemapUtility, который отвечает за преобразование серверных виртуальных путей в клиентские и назад. Процесс преобразования клиентского пути в серверный называется remap и соответствующие методы класса начинаются с этого слова.

19.12.2011 19:05
0
Круто! Сделал на локалке, все работает как часики.