同一ASP.NET解决方案中的两个网站

同一ASP.NET解决方案中的两个网站,asp.net,angularjs,iis,url-rewriting,Asp.net,Angularjs,Iis,Url Rewriting,我在同一个asp.net解决方案中有两个网站(index.html文件)。我有两个域,我想直接到正确的html文件 这是一个angularjs应用程序,所以我每个站点只有一个html文件 我希望对任何资源的所有请求都返回/index.html 我希望对上任何资源的所有请求都返回/site2/index.html 通过配置web.config和/或dns配置,这可能吗?我可以看到两种解决方案 第一个是在IIS中有两个不同的网站,并使用适当的绑定配置。在这种情况下,每个网站都有自己的文件夹和资源

我在同一个asp.net解决方案中有两个网站(index.html文件)。我有两个域,我想直接到正确的html文件

这是一个angularjs应用程序,所以我每个站点只有一个html文件

我希望对任何资源的所有请求都返回/index.html

我希望对上任何资源的所有请求都返回/site2/index.html

通过配置web.config和/或dns配置,这可能吗?

我可以看到两种解决方案

  • 第一个是在IIS中有两个不同的网站,并使用适当的绑定配置。在这种情况下,每个网站都有自己的文件夹和资源

    这是我推荐的解决方案

  • 另一个解决方案是使用IIS的URL重写模块

    您可以在那里安装它:

    然后在web.config中

  • 
    

    此规则将把来自子域的所有请求重写到子目录。

    假设我理解,“解决方案”不一定等同于“IIS网站/应用程序”。您可以将每个“文件夹”标记为它自己的IIS“网站/应用程序”,每个都有自己的
    主机头
    (然后在DNS中处理)。在看到这个答案之前,我同意使用IIS重写模块的第二个建议。此模块已在web.config中用于将所有请求重定向到index.html页面(单页angularjs应用程序)。我为第二个站点添加了另一条规则,并使用HTTP_主机条件将请求重写为正确的index.html
    
    <system.webServer>
      <rewrite>
        <rules>        
          <rule name="Rewrite sub-domain to sub-directory" stopProcessing="true">
            <match url="(.*)" />
            <conditions>
               <add input="{HTTP_HOST}" pattern="(\w+)\.company\.com" />
            </conditions>
            <action type="Rewrite" url="{C:1}/{R:0}" />
          </rule>
        </rules>
      </rewrite>
    </system.webServer>