通过IIS将http重定向到https

oewdyzsn  于 2023-03-18  发布在  其他
关注(0)|答案(4)|浏览(194)

我有这个应用程序,我刚刚安装了一个SSL证书。是的,我试图重定向用户只使用HTTPS://url.com。并阻止他们使用http://url.com site。然而,因为我缺乏理解的正则表达式来定义模式和条件,不幸的是,我找不到一个指南与一些例子,如何定义这些规则。我想要一个具体的例子,如何设置这个https://{HTTP_HOST}{REQUEST_URI}

4ngedf3f

4ngedf3f1#

确保已添加URL重写功能。在IIS管理器的URL重写部分中配置以下内容。
1.创建入站规则(空白规则)
1.请求的URL:Matches the pattern
1.使用:Wildcards
1.图案:*

条件

  • 输入:{HTTPS}
  • 类型:Matches the pattern
  • 图案:off
    行动
  • 操作类型:Redirect
  • 重定向URL:https://{HTTP_HOST}{REQUEST_URI}
  • 追加查询字符串Checked
  • 重定向类型:Found (302)

一旦你这么做了。创造一个条件...
1.右键单击新规则
1.条件-〉添加+
1.条件输入:{QUERY_STRING}

  1. x1米11米1x
    1.图案:off
    基本上它应该如下所示:

所有使用http请求的流量将自动重定向到https端口。

bsxbgnwa

bsxbgnwa2#

我想我已经找到了一个无需重写URL的解决方案。在IIS中,右键单击网站,选择“管理网站-高级设置”,展开“行为”,展开“HSTS”,并将属性“启用”和“重定向HttpToHttps”设置为“真”。
更新:正如@jonasfh所指出的,无论如何你都需要同时绑定http和https,因为只有成功的http请求才会被重定向到https。所以,如果http请求不成功(因为http绑定不存在),重定向到https也不会发生。谢谢。
Update 2:只是想添加设置后,需要从IIS重新启动网站。

esyap4oy

esyap4oy3#

我的方法来自Global.asax

protected void Application_BeginRequest()
        {
#if !DEBUG
            if (!Context.Request.IsSecureConnection)
            {
                if (Context.Request.Url.ToString().Contains(".well-known")) return;

                Response.StatusCode = 301;

                Response.RedirectPermanent(Context.Request.Url.ToString().Replace("http:", "https:"));
            }
#endif
        }
ukqbszuj

ukqbszuj4#

这就是我所遵循的。
转到publish文件夹并打开Web.config文件,然后在标记中粘贴以下重写规则<system.webServer>
<system.webServer>

<rewrite>
<rules>
  <rule name="HTTP to HTTPS Redirect" stopProcessing="true">
    <match url="(.*)" />
    <conditions>
      <add input="{HTTPS}" pattern="off" />
    </conditions>
    <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" />
  </rule>
</rules>
  • 确保在IIS上相关网站的SSL设置中取消选中“要求SSL”选项。

相关问题