如何在MVC路由中处理域名

时间:2012-01-30 07:37:20

标签: asp.net asp.net-mvc asp.net-mvc-3

如果他通过IP地址进入我的网站,我正尝试使用路由将我的用户重定向到另一个网址。

或者如果可能的话请告诉我是否可以通过路由处理域名。因为我可以使用路由器控制器和操作,但是我可以在那里处理域吗?

我目前正在使用它,如下所示,但我无法处理域名:

routes.MapRoute(
                "Controller",                                        
                "Controller/{action}/{id}",                          
                new { controller = "Controller", action = "Index", id =     UrlParameter.Optional }); 

1 个答案:

答案 0 :(得分:3)

如果您使用的是 IIS 7 ,最好在网络服务器级别实施此功能。

这样,正确的状态代码将返回到HTTP标头中的浏览器,您的MVC应用程序可以处理自己的路由,而不必担心在大多数情况下是Web服务器工作的域和主机名。

要在IIS上实现此目的,请在IIS控制台中打开您的网站,然后选择URL Rewrite并按照以下步骤操作:

  1. 创建新规则并将匹配网址设置为通配符,并将模式作为IP地址输入为xxx.xxx.xxx.xxx*
  2. 添加 {HTTP_HOST} 等于网站IP地址的条件。
  3. 将“操作类型”设置为重定向,然后输入要重定向到的模式。 “http://mysite.com {R:1}”在这种情况下会将IP地址之后的所有内容映射到其域,因此xxx.xxx.xxx.xxx/mycontent将重定向到mysite.com/mycontent
  4. 此方法将确保您的子目录已映射,并且您的站点保持搜索引擎友好,并生成正确的响应代码。

    下面的屏幕截图显示了您的规则在IIS中的外观:

    sample of how to set up URL rewrite in IIS7

    或者,如果您需要在应用范围内执行此操作,ASP.NET MVC Routing by Subdomain上的此问题可能会有用。