asp.net - 如何在 MVC 路由中处理域名

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

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

或者如果可能的话请告诉我是否可以通过路由处理域名。因为我可以对 Controller 和操作使用路由,但我是否也可以在其中处理域?

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

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

最佳答案

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

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

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

  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

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

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

sample of how to set up URL rewrite in IIS7

或者,这个问题关于ASP.NET MVC Routing by Subdomain如果您需要在应用程序范围内执行此操作,可能会很有用。

关于asp.net - 如何在 MVC 路由中处理域名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9060714/

相关文章:

asp.net-mvc - 说 ASP .NET MVC 应用程序是 HTTPModule 是否正确?

jquery - SELECT 列表的 JQuery 绑定(bind)有什么问题?

asp.net - View 状态与回传

c# - 在页面生命周期的什么时候我们可以分配母版​​页?

c# - MVC 生成的 Bootstrap 表没有响应

jquery - 如何使用 jquery 禁用按钮

javascript - 动画/过渡被 "onserverclick"取消

javascript - 当 ListView 没有返回数据时 jQuery 出错

asp.net - 为什么“路由”选项卡没有出现在Glimpse Web调试器中?

c# - 为一个 Controller 创建多个路由