我遇到了一些无法配置的复杂场景。
我需要一个 web.config 文件来配置 IIS 以服务 2 个 Angular 应用。第一个将在 domain.com 上运行,第二个将在 sub.domain.com 上运行
现在有效的修复方法是将第一个应用程序 (domain.com) 放在 wwwroot 中,将第二个应用程序 (sub.domain.com) 放在第一个应用程序内的文件夹中。web.config:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Redirect subdomain" enabled="true">
<match url="^(.*)$"/>
<conditions>
<add input="{HTTP_HOST}" pattern="^sub\.domain\.com$"/>
</conditions>
<action type="Rewrite" url="subfolder/{R:1}"/>
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
问题是我需要添加一些仅适用于第一个应用程序的 URL 重写规则。如果我将它们添加到 web.config 文件中,那么由于我添加的规则,第二个应用程序将重定向到第一个应用程序。
理想的解决方案是这样的
wwwroot
- 第一个应用程序
- ...
- web.config(添加url重写规则)
- second_app_v2.1
- ...
- web.cofig ( if (我们在 sub.domain.com 上) { 转到第二个应用程序 } else { 转到第一个应用程序 } )
这样部署会更安全,如果我需要返回执行不同的版本,也会容易得多。我是这项技术的新手,如果有更好的方法,我将不胜感激。
答案1
我使用 asp.net mvc,不知道你是否使用。
我只需读取传入域,并根据域呈现适当的 angular 配置视图。这似乎比弄乱web.config
和重写 URL 更容易。显然,您将根据要呈现的视图/angular 应用程序提供适当的 js 文件。
服务器上的逻辑将非常少。在 IIS 中,您只需将两个域指向同一个 asp.net 文件夹即可。此解决方案基本上涉及在一个 asp.net 网站的上下文中创建两个 SPA。
如果您有兴趣,我很乐意发布执行此操作的代码。