我想将所有www流量重定向到非www流量
我已经将此复制到我的web.config
<system.webServer> / <rewrite> / <rules> <rule name="Remove WWW prefix" > <match url="(.*)" ignoreCase="true" /> <conditions> <add input="{HTTP_HOST}" pattern="^www\.domain\.com" /> </conditions> <action type="Redirect" url="http://domain.com/{R:1}" redirectType="Permanent" /> </rule>
根据这篇文章
如何使用“ www” URL重定向到没有“ www” URL的重定向,反之亦然?
但我收到500个内部服务器错误。
您可能会考虑另一种方法:
protected void Application_BeginRequest (object sender, EventArgs e) { if (!Request.Url.Host.StartsWith ("www") && !Request.Url.IsLoopback) { UriBuilder builder = new UriBuilder (Request.Url); builder.Host = "www." + Request.Url.Host; Response.Redirect (builder.ToString (), true); } }
但是,这将执行302重定向,因此建议进行一些调整:
protected void Application_BeginRequest (object sender, EventArgs e) { if (!Request.Url.Host.StartsWith ("www") && !Request.Url.IsLoopback) { UriBuilder builder = new UriBuilder (Request.Url); builder.Host = "www." + Request.Url.Host; Response.StatusCode = 301; Response.AddHeader ("Location", builder.ToString ()); Response.End (); } }
这将返回“ 301已永久移动”。