将非www重定向到www页面中的结果不是正确重定向

时间:2014-03-19 05:40:24

标签: asp.net .net iis web-config url-redirection

我正在尝试将非www网站重定向到www,但是当我在web.config或我的Global.asax中添加重定向规则时,它显示该页面未正确重定向。 web.config中的重定向规则

    <rewrite>
      <rules>
        <rule name="CanonicalHostNameRule" enabled="true">
          <match url="(.*)" />
          <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
            <add input="{HTTP_HOST}" pattern="testdomain\.com$" />
            <add input="{HTTP_HOST}" pattern="^www\.testdomain\.com$" negate="true" />
          </conditions>
          <action type="Redirect" url="http://www.testdomain.com/{R:1}" />
        </rule>
      </rules>
    </rewrite>

我也在Application_BeginRequest内的Global.asax中试过这个 注意:我一次尝试其中一种。

if(HttpContext.Current.Request.Url.ToString().ToLower().Contains("http://testdomain.com"))
{
    HttpContext.Current.Response.Status = "301 Moved Permanently";
    HttpContext.Current.Response.AddHeader("Location",
    Request.Url.ToString().ToLower().Replace("http://testdomain.com", "http://www.testdomain.com"));
}

我的Default.aspx和Default.aspx.cs页面中没有代码.. 任何人都知道实际问题可能是什么。

1 个答案:

答案 0 :(得分:0)

<system.webServer>部分

下添加此代码此代码
<rewrite>
<rule name="Redirect to www">
  <match url=".*" />
  <conditions logicalGrouping="MatchAny">
    <add input="{HTTP_HOST}" pattern="^(www\.)(.*)$" negate="true" />
  </conditions>
  <action type="Redirect" url="http://www.{HTTP_HOST}/{R:0}" redirectType="Permanent"/>
</rule>
</rewrite>