当用户输入没有非 www 的 URL 时,我需要重定向我的网站,并且应该使用 www 重定向。
示例:abc.com 到 www.abc.com
而且我也需要支持子域网址。
示例:abc.xyz.com 到 www.abc.xyz.com
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<rewrite>
<rules>
<rule name="non-www to www" enabled="true" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{HTTP_HOST}" pattern="^[^\.]+\.[^\.]+$" />
</conditions>
<action type="Redirect" url="http://www.{HTTP_HOST}/{R:0}" />
</rule>
</rules>
</rewrite>
</system.webServer>
您也可以在全球范围内捕捉到这一点Applicaton_BeginRequest
:
string url = HttpContext.Current.Request.RawUrl;
if (!url.StartsWith("www.")) {
Response.Redirect("www." + url);
}
编辑:这个问题显示 302 由 Response.Redirect 返回。
正如有人在那里回答的那样,Response.RedirectPermament
可以使用.NET 4.0
,这将返回 301。
奇怪的是。我Response.Redirect
在我的一个网站上使用.NET 4.0
它,它返回301
得很好。