【问题标题】:Redirect http to https via IIS通过 IIS 将 http 重定向到 https
【发布时间】:2018-12-06 09:51:04
【问题描述】:

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

【问题讨论】:

    标签: iis https url-rewriting http-redirect


    【解决方案1】:

    我想我找到了一个无需重写 url 的解决方案。在 IIS 中,右键单击网站,选择“管理网站 - 高级设置”,展开“行为”,展开“HSTS”并将属性“已启用”和“重定向HttpToHttps”设置为“真”。

    【讨论】:

    • 似乎要使其工作,您需要同时绑定到 http 和 https
    • 是的,因为对 http 的成功请求会被重定向到 https,如果对 http 的请求不成功(因为 http 绑定不存在),则不会重定向到 https。
    【解决方案2】:

    我的 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
            }
    

    【讨论】:

      【解决方案3】:

      确保您已添加 URL 重写功能。在 IIS 管理器的 URL 重写部分中配置以下内容。

      1. 创建入站规则(空白规则)
      2. 请求的 URL:Matches the pattern
      3. 使用:Wildcards
      4. 模式:*

      条件

      • 输入:{HTTPS}
      • 类型:Matches the pattern
      • 模式:off

      动作

      • 动作类型:Redirect
      • 重定向网址:https://{HTTP_HOST}{REQUEST_URI}
      • 追加查询字符串Checked
      • 重定向类型:Found (302)

      一旦你这样做了。创建条件...

      1. 右键单击您的新规则
      2. 条件 -> 添加+
      3. 条件输入:{QUERY_STRING}
      4. Matches the Pattern
      5. 模式:off

      基本上应该是这样的:

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

      【讨论】:

      • 你说的 {HTTP_HOST}{REQUEST_URI} 是什么意思,应该替换为与我的 url 匹配的实际规则,对吧?
      • 我已经修改了我的答案,希望能阐明要点。不,您不会用您的网站替换那些。所有设置均如显示。
      猜你喜欢
      • 1970-01-01
      • 2017-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-18
      • 2013-05-02
      相关资源
      最近更新 更多