最近接到一个需求,客户但愿不管是http仍是https请求均可以访问,而且http能转换成https。研究了一圈发现iis的重定向和重写均可以实现http强转https,记录一下。html
用到的东东:api
Internet信息服务(IIS)管理器7.0浏览器
URL重写模块安装包,下载地址x64(32也有):http://www.microsoft.com/downloads/details.aspx?displaylang=zh-cn&FamilyID=1b8c7bd8-8824-4408-b8fc-49dc7f951a00服务器
SSL证书post
一、咱们先来准备证书测试
① 打开IIS管理控制台,双击“服务器证书”。网站
② 在弹出的窗口中,单击右上角“导入”。url
③ 导入证书文件,注意申请证书时若是填写了密码,这里也要输入相关密码。spa
二、而后绑定https,让站点能够接收http和https3d
① 右击网站站点,选择“编辑绑定”
② 在弹出的窗口中,单击“添加”按钮
③ 切换类型为https,在证书下拉框中选择刚刚导入的证书,最后单击“确认”便可
*SSL设置不要勾选
三、接下来进入正题,记录一下重定向和重写的实现方式
重定向
经过url规则匹配重定向到新的url中,使用浏览器打开连接时,视觉上会看到http变成https,就好像打开http://www.baidu.com,连接会变成https://www.baidu.com
我这边站点上挂了三个子站点,Api为接口,其余两个为后台系统、H5
若是把重定向的规则创建在Sites上的话,下面的子站点将都适用于此规则,可是
弊端:对api进行post请求,url被重定向到新的地址上,因为是重定向跳转,因此post请求会变成get请求,会出现问题。
解决办法:若是不是全部都须要http强转https,重定向规则就不要设置到总站点上,哪里须要建哪里就好
好了,咱们开始建立重定向规则
① 安装好URL重写模块成功后,在WeiSites和WeixinPlat站点分别添加URL重写入站规则
单机须要创建规则的站点(以WeiSites为例),双击“URL重写”,在右边窗体中选择“添加规则”,并添加一个空白规则,以下所示:
② 添加如下规则,如图所示(名字随意):
模式:
(.*)
条件:
{HTTP} 与模式匹配 ^OFF$
{HTTP_HOST} 与模式不匹配 ^(localhost)
③ 填写结束以后点击右上角的“应用”便可。
重定向完成,在浏览器输入你要访问的连接,若是是http,就会重定向到https了。须要作其余的重定向,修改规则就能够了,仍是很强大的
匹配规则取得是当前站点后面的路径,因此规则不可直接写http替换成https
重写URL
经过url规则匹配重写url,使用浏览器打开连接时,视觉上不会看到变化
举个最简单的例子,如今有一个index.html,可是我但愿在浏览其中输入index.himmy就能浏览到这个页面,且地址栏不会看到请求路径的变化。像以前作.aspx重写成.html仍是很常见的。
新建一个空白入站规则
咱们来测试下这个模式
咱们能够看到咱们的请求被拆分了几块,{R:1}就是咱们须要截取的那部分,咱们继续
操做中设置重写的url,将{R:1}和html拼接,就能够了。访问该网站时,himmy就会被替换成html,地址栏时看不到变化的。
同理,http重写成https用重写也是能够的,看需求定了。因为http和https是请求头,因此须要和重定向同样设定,看下面。
总站点匹配规则取得是“/”后面的路径
子站点匹配的是站点后面的路径
因此在实现http重写成https时,匹配规则和条件仍是得按照重定向的写(名字随便)
操做类型是重写
就我这次需求而言,选择的仍是重定向,由于客户要求地址栏发生变化。
完成。