如何将子域重定向到 ASP.NET MVC 中的'area'?



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

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

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

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

然而,我找不到一种方法来配置它。有人知道我们如何设置上面的吗?

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

你看过Url重写吗?如果你使用IIS,那么你可以下载url重写模块,然后在web。你可以这样做:

<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/

参考答案在Mvc区域路由?

回答者在/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" }
    );
}

最新更新