如何使 CMS 与现有的 asp.net 应用程序在 IIS 中和平共处?

如何使 CMS 与现有的 asp.net 应用程序在 IIS 中和平共处?

我们现有的公共网站由一堆 asp.net 页面组成,其中大部分是静态内容,还有一些设置为虚拟目录的真实 Web 应用程序。我们现在正在考虑安装恩布拉科,这要求您将其安装在网站的根目录。

因为 CMS 是网站的根源,我认为在 Umbraco 下运行我们现有的页面和网络应用程序不是一个好主意(因为它执行 URL 重写和继承 web.config 设置等)。那么,我们如何使一切在过渡到 CMS 时和完成后都能和平共处呢?

到目前为止,我唯一的想法是将 CMS 和应用程序设置为单独的网站,然后使用某种 URL 重写/反向代理来使所有内容正确解析:

  • www.example.com将继续解析到我们的旧主页
  • www.example.com/dept1将继续解析到旧的 dept1 页面
  • www.example.com/dept2将解析到 CMS 上的新 dept2 页面
  • www.example.com/app将解析为现有的 Web 应用程序

答案1

我已经遇到过几次这种情况,除非你要设置不同的子域名,例如

  • sub1.example.com (umbraco)
  • www.example.com
  • www.example.com/dept1

最好将其安装在根目录中,并将其他应用程序设置为虚拟目录/应用程序。您需要编辑每个子应用程序中的配置文件,在相关部分(连接字符串、命名空间)的顶部添加,以停止配置级联并进行测试、测试、测试。

如果将每个子应用程序的根文件夹名称添加到 umbracoreservedurls / 目录,则 URL 重写就不是什么问题了。

我知道这很痛苦 - 不幸的是这只是 Umbraco 目前的工作方式。

答案2

我赞同 Neil 的评论,但我会以答案的形式回复,以便更好地格式化我的回复。

以下是 URL Rewrite 2.0 规则:

RewriteCond  Host:  (www\.)?domain\.com
RewriteRule  (?!/domain)(.*)   /domain$2 [I]

将您的网站放在名为 /domain 的文件夹中。显然,您可以更改 URL 和文件夹。

这确保了带有 /domain 的任何内容都不会重定向,但其他所有内容都会重定向。这允许 asp.net 重定向以及 URL Rewrite 不知道的其他内容仍然有效。

相关内容