通过 IIS 将 http 重定向到 https

Posted

技术标签:

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

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

【问题讨论】:

【参考方案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 重写部分中配置以下内容。

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

条件

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

动作

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

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

    右键单击您的新规则 条件 -> 添加+ 条件输入:QUERY_STRING Matches the Pattern 模式:off

基本上应该是这样的:

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

【讨论】:

你说的 HTTP_HOSTREQUEST_URI 是什么意思,应该替换为与我的 url 匹配的实际规则,对吧? 我已经修改了我的答案,希望能阐明要点。不,您不会用您的网站替换那些。所有设置均如显示。

以上是关于通过 IIS 将 http 重定向到 https的主要内容,如果未能解决你的问题,请参考以下文章

IIS 将 www 重定向到非 www 和 http 到 https:是不是可以仅使用一个重定向来完成?

Elastic Beanstalk 将 http 重定向到 https 用于 iis 站点

IIs 8 将 URL 从 http 重定向到 https

IIS 8 基于 URL 地址重定向到 HTTPS

iis url 将 http 重定向到非 www https

web.config 中的 IIS 重写规则将 HTTPS 请求重定向到 HTTP