我想所有請求路由中的域名爲「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