如果我的用户通过 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 重写
,然后按照以下步骤操作:
- 创建新规则并将匹配网址设置为通配符,然后输入模式作为 IP 地址
xxx.xxx.xxx.xxx*
- 添加一个条件,其中 {HTTP_HOST} 等于网站的 IP 地址。
- 将“操作类型”设置为重定向,然后输入您想要重定向到的模式。在这种情况下,“http://mysite.com {R:1}” 会将 IP 地址之后的所有内容映射到其等效域名,因此 xxx.xxx.xxx.xxx/mycontent 将重定向到 mysite.com/mycontent
此方法将确保您的子目录已映射,并且您的网站保持搜索引擎友好,并生成正确的响应代码。
下面的屏幕截图显示了您的规则在 IIS 中的外观:
或者,这个问题关于ASP.NET MVC Routing by Subdomain如果您需要在应用程序范围内执行此操作,可能会很有用。
关于asp.net - 如何在 MVC 路由中处理域名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9060714/