1

我有一个面临规范问题的网站。我希望我的网站在我输入我的网址时从非 www 移动到 www,例如 abc.com 到 www.abc.com。我得到了一个代码,但它不起作用。

  <rewrite>
 <rules>
   <rule name="RedirectToWWW" enabled="true" stopProcessing="true">
  <match url=".*" />
  <conditions>
    <add input="{HTTP_HOST}" pattern="^(?!www)(\S+)\.com$" />
   </conditions>
  <action type="Redirect" url="http://www.{C:0}/{R:0}" />
   </rule>
  </rules>
</rewrite>

因为错误是:重写不属于system.webServer

4

1 回答 1

1

您可能会考虑另一种方法:

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 Moved Permanently。

如果您想在web.config中添加它,请检查此链接http://weblogs.asp.net/owscott/archive/2009/11/27/iis-url-rewrite-rewriting-non-www-to-www.aspx

于 2013-08-01T05:43:10.787 回答