我想所有请求路由中的域名为“xyz.com” accours,如:ASP.NET MVC路由:重新路由完整域(内部)
http://xyz.com/asdf/1
http://www.xyz.com/asdf/1
http://www.xyz.com/bcd/asd/2
只是到另一个域:
http://www.abc.com
我如何通过MVC的路由机制来实现这一点? RouteHandler? MapRoute通配符?
在此先感谢
我想所有请求路由中的域名为“xyz.com” accours,如:ASP.NET MVC路由:重新路由完整域(内部)
http://xyz.com/asdf/1
http://www.xyz.com/asdf/1
http://www.xyz.com/bcd/asd/2
只是到另一个域:
http://www.abc.com
我如何通过MVC的路由机制来实现这一点? RouteHandler? MapRoute通配符?
在此先感谢
你不能做到这一点VIA MVC路由,但你有几个选择:
的Global.asax
protected void Application_BeginRequest(){
if (Context.Request.Url.Contains("xyz.com"))
Response.Redirect(Context.Request.Url.ToString().Replace("xyz.com", "www.xyz.com"));
}
一个Response.Redirect的意志仍然发送一个临时的302状态码。如果你希望搜索引擎理解你的网站已经移动搜索引擎优化的目的,你会希望确保您使用的是301
首选
如果你正在使用IIS7,你也可以用URL做到这一点重写模块。 http://www.iis.net/download/urlrewrite
安装它,并在这看起来是这样的
<rule name="Forward XYZ to ABC" stopProcessing="true">
<match url="(.*)" />
<conditions logicalGrouping="MatchAny">
<add input="{HTTP_HOST}" pattern="^xyz\.com$" />
<add input="{HTTP_HOST}" pattern="^www.xyz\.com$" />
</conditions>
<action type="Redirect" url="http://www.abc.com/{R:1}" redirectType="Permanent" />
</rule>
替代
在Global.asax添加在web.config坚持规则中有下面
protected void Application_BeginRequest(){
if (Context.Request.Url.Contains("xyz.com"))
{
Response.StatusCode = 301;
Response.RedirectLocation = url;
Response.End();
}
}
在global.asax – bmancini 2011-03-18 17:53:03
我不得不把行动过滤器放在每一个行动,我猜...所以这不是一个操作对我来说 – David 2011-03-18 18:31:17
然后把它放在Global.asax – 2011-03-18 18:35:23