如何将子域重定向到ASP.NET MVC中的“区域”?

时间:2014-03-15 00:09:13

标签: asp.net asp.net-mvc azure subdomain asp.net-mvc-areas

我们有以下三个外部可见'端点'

  • api.domain.com
  • demo.domain.com
  • my.domain.com

我们正在使用MVC5,理想情况下我们希望将上述每个子域引导到它自己的区域(按照MVC术语)。

  • api.domain.com =>路由到WebAPI(作为一个单独的'区域'?不确定)
  • demo.domain.com =>前往'demo'区域的路线
  • my.domain.com =>前往'my'区域的路线
  • support.domain.com =>前往“支持”区域(等等)

但是,我找不到配置它的方法。有谁知道我们如何设置上述内容?

最终目标是将上述所有内容作为我们可以部署到Azure云服务的单个MVC站点。

2 个答案:

答案 0 :(得分:2)

你看过Url Rewriting吗?如果您使用的是IIS,则可以下载url rewrite模块,然后在web.config中执行以下操作:

<rewrite>
   <rules>
      <rule name="Rewrite sub-domain to dir" enabled="true">
         <match url="^(.*)$" />
         <conditions>
            <add input="{HTTP_HOST}" pattern="^subdomain\.domain\.co\.uk$" />
         </conditions>
         <action type="Rewrite" url="subdomain/{R:1}" />
      </rule>
   </rules>
</rewrite>

来源:http://www.azurecurve.co.uk/2011/12/how-to-rewrite-a-sub-domain-to-a-directory-in-iis/

答案 1 :(得分:-2)

参考Mvc area routing?

的答案

/Admin/文件夹下某个区域的回答者示例是:

public override void RegisterArea(AreaRegistrationContext context)
{
    context.MapRoute(
        "Admin_default",
        "Admin/{controller}/{action}/{id}",
        new { action = "Index", id = UrlParameter.Optional },
        new { controller = "Branch|AdminHome|User" },
        new[] { "MyApp.Areas.Admin.Controllers" }
    );
}