Как сделать так, чтобы 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.

Другие вопросы по тегам