2012-01-30 48 views
2

我想使用路由将用户重定向到另一个URL,如果他通过IP地址进入我的网站。如何处理MVC路由中的域名

或者如果可能请告诉我是否可以通过路由处理域名。因为我可以使用Controller和Action的路由,但是我也可以在那里处理Domain吗?

我目前使用它像下面,但我无法处理域:

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

回答

3

如果您正在使用IIS 7,它可能是更好的Web服务器级别来实现这一点。

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

为了实现这一目标的IIS,在IIS控制台中打开你的网站,并选择URL Rewrite,并按照下列步骤操作:

  1. 创建新规则,比赛URL设置为通配符并输入模式为IP地址为xxx.xxx.xxx.xxx*
  2. 添加一个条件,其中{HTTP_HOST}等于该站点的IP地址。
  3. 将“动作类型”设置为重定向,然后输入您希望重定向到的模式。 “http://mysite.com {R:1}”在这种情况下,将IP地址映射到其领域equivilent后一切,所以xxx.xxx.xxx.xxx/mycontent会重定向到mysite.com/mycontent

这种方法将确保您的子目录已被映射,并且您的网站保持搜索引擎友好状态,同时生成正确的响应代码。

下面的屏幕截图显示您的规则可能会如何看在IIS:

sample of how to set up URL rewrite in IIS7

另外,如果您需要在您的应用程序的范围内做到这一点上ASP.NET MVC Routing by Subdomain这个问题可能是有用的。