IIS将http强转为https(重定向和重写)

2020/4/25 9:25:00

最近接到一个需求,当用户输入域名时强制转https。研究了一圈发现iis的重定向和重写都可以实现http强转https,记录一下。

用到的东东:

  Internet信息服务(IIS)管理器7.0

    URL重写模块安装包,下载地址x64(32也有):http://www.microsoft.com/downloads/details.aspx?displaylang=zh-cn&FamilyID=1b8c7bd8-8824-4408-b8fc-49dc7f951a00

    SSL证书阿里云免费证书

 

1、我们先来准备证书

①    打开IIS管理控制台,双击“服务器证书”。

图片 1.png 

②   在弹出的窗口中,单击右上角“导入”。

 图片 2.png

③    导入证书文件,注意申请证书时如果填写了密码,这里也要输入相关密码。

图片 3.png 

2、然后绑定https,让站点可以接收http和https

①   右击网站站点,选择“编辑绑定”

图片 4.png 

②   在弹出的窗口中,单击“添加”按钮

图片 5.png 

③   切换类型为https,在证书下拉框中选择刚刚导入的证书,最后单击“确认”即可

图片 6.png 

*SSL设置不要勾选

图片 7.png 

 

3、接下来进入正题,记录一下重定向和重写的实现方式

重定向

通过url规则匹配重定向到新的url中,使用浏览器打开链接时,视觉上会看到http变成https,就好像打开http://www.baidu.com,链接会变成https://www.baidu.com

我这边站点上挂了三个子站点,Api为接口,其他两个为后台系统、H5

图片 8.png 

 

如果把重定向的规则建立在Sites上的话,下面的子站点将都适用于此规则,但是

弊端:对api进行post请求,url被重定向到新的地址上,由于是重定向跳转,所以post请求会变成get请求,会出现问题。

解决办法:如果不是所有都需要http强转https,重定向规则就不要设置到总站点上,哪里需要建哪里就好

好了,我们开始创建重定向规则

①   安装好URL重写模块成功后,在WeiSites和WeixinPlat站点分别添加URL重写入站规则

单机需要建立规则的站点(以WeiSites为例),双击“URL重写”,在右边窗体中选择“添加规则”,并添加一个空白规则,如下所示:

图片 9.png 

图片 10.png 

②   添加以下规则,如图所示(名字随意):

 

图片 11.png 

模式:

(.*)

条件:

{HTTP} 与模式匹配  ^OFF$

{HTTP_HOST} 与模式不匹配 ^(localhost) 

③   填写结束之后点击右上角的“应用”即可。

 图片 12.png

重定向完成,在浏览器输入你要访问的链接,如果是http,就会重定向到https了。需要做其他的重定向,修改规则就可以了,还是很强大的

图片 14.png 图片 13.png

匹配规则取得是当前站点后面的路径,所以规则不可直接写http替换成https

 

重写URL

 通过url规则匹配重写url,使用浏览器打开链接时,视觉上不会看到变化

举个最简单的例子,现在有一个index.html,但是我希望在浏览其中输入index.himmy就能浏览到这个页面,且地址栏不会看到请求路径的变化。像之前做.aspx重写成.html还是很常见的。

新建一个空白入站规则

图片 15.png 

我们来测试下这个模式

图片 16.png 

我们可以看到我们的请求被拆分了几块,{R:1}就是我们需要截取的那部分,我们继续

图片 17.png 

操作中设置重写的url,将{R:1}和html拼接,就可以了。访问该网站时,himmy就会被替换成html,地址栏时看不到变化的。

同理,http重写成https用重写也是可以的,看需求定了。由于http和https是请求头,所以需要和重定向一样设定,看下面。

 

图片 18.png 

总站点匹配规则取得是“/”后面的路径

图片 19.png 

子站点匹配的是站点后面的路径

所以在实现http重写成https时,匹配规则和条件还是得按照重定向的写(名字随便)

 图片 20.png

操作类型是重写

图片 21.png 

 

就我此次需求而言,选择的还是重定向,因为输入要求地址栏发生变化。

完成。