![如何使 CMS 与现有的 asp.net 应用程序在 IIS 中和平共处?](https://linux22.com/image/497100/%E5%A6%82%E4%BD%95%E4%BD%BF%20CMS%20%E4%B8%8E%E7%8E%B0%E6%9C%89%E7%9A%84%20asp.net%20%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E5%9C%A8%20IIS%20%E4%B8%AD%E5%92%8C%E5%B9%B3%E5%85%B1%E5%A4%84%EF%BC%9F.png)
我们现有的公共网站由一堆 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 不知道的其他内容仍然有效。