通过 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 站点