我想路由所有域名为“xyz.com”的请求,例如:
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通配符?
提前致谢
答案 0 :(得分:1)
您无法通过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"));
}
答案 1 :(得分:0)
response.redirect仍会发送临时302状态代码。如果您希望搜索引擎了解您的网站已经移动用于搜索引擎优化目的,您将需要确保使用301.
<强>优选强>
如果您使用的是IIS7,您还可以使用URL重写模块完成此操作。 http://www.iis.net/download/urlrewrite
安装它,并将规则粘贴在看起来像这样的web.config中
<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中添加以下内容
protected void Application_BeginRequest(){
if (Context.Request.Url.Contains("xyz.com"))
{
Response.StatusCode = 301;
Response.RedirectLocation = url;
Response.End();
}
}