Как сделать так, чтобы CMS и существующие приложения asp.net мирно жили в IIS?
Наш существующий общедоступный веб-сайт состоит из множества страниц asp.net с в основном статическим контентом и некоторыми реальными веб-приложениями, которые настроены как виртуальные каталоги. Сейчас мы смотрим на установку Umbraco, которая требует, чтобы вы установили его в корне сайта.
Поскольку CMS будет в корне веб-сайта, я предполагаю, что это плохая идея - запускать наши существующие страницы и веб-приложения под Umbraco (из-за перезаписи URL-адреса, который он выполняет, и наследования настроек web.config и т. Д.) мы заставляем все мирно сосуществовать как во время перехода на CMS, так и после того, как мы закончим?
До сих пор моей единственной идеей было настроить CMS и приложения в качестве отдельных веб-сайтов, а затем использовать какой-либо URL-адрес для перезаписи / обратного прокси-сервера, чтобы все решалось правильно:
- www.example.com будет продолжать разрешать нашу старую домашнюю страницу
- www.example.com/dept1 будет продолжать разрешать старую страницу dept1
- www.example.com/dept2 разрешит новую страницу dept2 в CMS
- www.example.com/app разрешит существующее веб-приложение
2 ответа
Я сталкивался с этой ситуацией несколько раз, и если вы не собираетесь настраивать разные субдомены, например
- sub1.example.com (umbraco)
- www.example.com
- www.example.com/dept1
лучше установить его в корне и настроить другие приложения в качестве виртуальных каталогов / приложений. Вам нужно будет отредактировать файлы конфигурации в каждом из дочерних приложений, чтобы добавить их в верхнюю часть соответствующих разделов (строки подключения, пространство имен), чтобы остановить каскадирование конфигурации и тестирование, тестирование, тестирование.
Перезапись URL не является такой проблемой, если вы добавляете имя корневой папки каждого дочернего приложения в umbracoreservedurls / каталоги.
Это боль, которую я знаю - к сожалению, именно так Umbraco работает сейчас.
Я второй комментарий Нила, но я отвечу как ответ, чтобы я мог лучше отформатировать свой ответ.
Вот правило URL Rewrite 2.0 для вас:
RewriteCond Host: (www\.)?domain\.com
RewriteRule (?!/domain)(.*) /domain$2 [I]
Поместите ваш сайт в папку с именем / domain. Obviously you can change the URL and folder.
This ensures that anything with /domain doesn't redirect, but everything else does. That allows asp.net redirects, and other things that URL Rewrite isn't aware of, to still work.