IIs 8 将 URL 从 http 重定向到 https

IIs 8 Redirect URL from http to https

我刚刚为我的域名和主机设置了 ssl。我想将我的站点限制为 https://www.example.com ONLY.

如果任何用户试图打开 http://example.comwww.example.comexample.comhttps://example.com,他必须被重定向到 https://www.example.com

重定向必须仅针对域名。 URL 的其余部分将保持原样。

例如:如果用户打开 example.com/dir1/page1.aspx,他必须被重定向到 https://www.example.com/dir1/page1.aspx

我想使用 IIS 重写规则来完成。

我通过将此代码添加到域根目录中的 web.config 文件解决了这个问题。

  • 第一条规则匹配 url 如果它 不是以 www 开始 无论如何 它是 httphttps
  • 第二个规则匹配 url 如果它 开始 www 但它 不是 https

    <system.webServer>
     <rewrite>
      <rules>
    
        <rule name="Redirect from non www" stopProcessing="true">
          <match url=".*" />
          <conditions>
            <add input="{HTTP_HOST}" pattern="^example.com$" />
          </conditions>
          <action type="Redirect" url="https://www.example.com/{R:0}" redirectType="Permanent" />
        </rule>
    
        <rule name="Redirect from non https" stopProcessing="true">
          <match url=".*" />
          <conditions>
            <add input="{HTTPS}" pattern="^OFF$" />
            <add input="{HTTP_HOST}" pattern="^www.example.com$" />
          </conditions>
          <action type="Redirect" url="https://www.example.com/{R:0}" redirectType="Permanent" />
        </rule>
    
      </rules> 
     </rewrite>
    </system.webServer>
    

如果您无法控制 iis 或使用托管公司不允许您更改设置的共享托管,请将此添加到您的 global.asax 文件中。

protected void Application_BeginRequest(object sender, EventArgs e)
{
    if (HttpContext.Current.Request.IsSecureConnection.Equals(false) && HttpContext.Current.Request.IsLocal.Equals(false))
    {
        Response.Redirect("https://" + Request.ServerVariables["HTTP_HOST"] + HttpContext.Current.Request.RawUrl);
    }
}

已编辑:

对于规范标签 (www.example.com),您无需对代码进行任何更改。 在您的 plesk panel/odin 面板(即使在共享主机中)为它提供了一个设置为 select 您应用程序的默认 url。

它会自动将您的网站重定向到 www.example.com

您网站的托管设置下的设置。 select www

的首选域选项