看起来在.NET MVC中使用内置的友好路由库,可以让我们做到这样的事情。
如果不明确我想要在.NET MVC中使用内置工具做什么,我想要通过MVC框架自动将以www开头的网址重定向到非www网址。
看起来在.NET MVC中使用内置的友好路由库,可以让我们做到这样的事情。
如果不明确我想要在.NET MVC中使用内置工具做什么,我想要通过MVC框架自动将以www开头的网址重定向到非www网址。
<system.webServer>
下的web.config
中:
<rewrite>
<rules>
<rule name="Canonical" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{HTTP_HOST}" pattern="^www[.](.+)" />
</conditions>
<action type="Redirect" url="http://{C:1}/{R:0}" redirectType="Permanent" />
</rule>
</rules>
</rewrite>
或者您可以在 global.asax.cs
中进行此重定向:
protected void Application_BeginRequest(object sender, EventArgs ev)
{
if (Request.Url.Host.StartsWith("www", StringComparison.InvariantCultureIgnoreCase))
{
Response.Clear();
Response.AddHeader("Location",
String.Format("{0}://{1}{2}", Request.Url.Scheme, Request.Url.Host.Substring(4), Request.Url.PathAndQuery)
);
Response.StatusCode = 301;
Response.End();
}
}
但记住@Sam所说的话,在这里查看更多信息。
<rewrite>
<rules>
<rule name="Canonical" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{HTTP_HOST}" pattern="^([a-z]+[.]net)$" />
</conditions>
<action type="Redirect" url="http://www.{C:0}/{R:0}" redirectType="Permanent" />
</rule>
</rules>
</rewrite>
{C:0}
1, 2, ..., N
来获取匹配组。if (HttpContext.Current.Request.Url.ToString().ToLower().Contains("http://YourSite.com"))
{
HttpContext.Current.Response.Status = "301 Moved Permanently";
HttpContext.Current.Response.AddHeader("Location", Request.Url.ToString().ToLower().Replace("http://YourSite.com","http://www.YourSite.com"));
}
它可以运行并已经测试过。