最近接到一个需求,客户希望无论是http还是https请求都可以访问,并且http能转换成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管理控制台,双击“服务器证书”。

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

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

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

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

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

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

*SSL设置不要勾选

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

重定向

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

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

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

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

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

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

①   安装好URL重写模块成功后,在WeiSitesWeixinPlat站点分别添加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时,匹配规则和条件还是得按照重定向的写(名字随便)

操作类型是重写

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

完成。

IIS将http强转为https(重定向和重写)的更多相关文章

  1. 项目通过nginx强转为https访问后,代码中重定向的连接又变成了http协议,导致点击页面按钮,后台逻辑处理完后重定向报错了

    修改如下,需要在nginx对应的server下的location中增加配置,使重定向的地址协议取当前链接的协议,而不是nginx访问tomcat的协议,因为nginx访问tomcat是http的,并没 ...

  2. Apache之Rewrite和RewriteRule规则梳理以及http强转https的配置总结

    一. 简单实例介绍一般来说,apache配置好http和https后,如果想要做http强转到https,需要设置url重定向规则,大致需要下面几个步骤即可完成配置: 1)在httpd.conf文件里 ...

  3. IIS 实现http重定向https(亲测有效:解决URL重写模块配置https重定向不生效的问题)

    前言 以前部署网站的时候,都是通过代码来实现http重定向https,最近在部署个人网站的时候,突发奇想可不可通过IIS来实现无代码的重定向呢? 在一番操作猛如虎的搜索引擎操作后,发现只有google ...

  4. iis设置http重置到https

    http://www.cnblogs.com/tangge/p/4259749.html 1.购买SSL证书,参考:http://www.cnblogs.com/yipu/p/3722135.html ...

  5. Linux系统将http转为https

    想把网站由http访问转变为https访问并没有想象中那么难,网上查了一些资料,想要转为https需要SSL安全证书,这里推荐一款景安网络的证书,可以免费试用一年时间,自己拿来实践还是很不错的选择. ...

  6. java里null强转为某个类会报错吗?

    1.定义一个User类如下: /** * @author lizhibiao * @date 2018/11/27 17:21 */public class User{ private String ...

  7. SPRING IN ACTION 第4版笔记-第九章Securing web applications-011-把敏感信息请求转为https(requiresChannel())

    1.把包含敏感信息的请求转为https请求,则较为安全,但如何只把有需要安全的请求转为https,而不是不加分辩就把所有请求都转为https呢?可以用requiresChannel() @Overri ...

  8. WiFi认证中HTTPS重定向

    问题描述 在引入WiFiDog实现上网认证功能中,有2个绕不过的问题:https重定向和Select检测问题,前者非要求用户访问80端口,后者导致效率较低下.就用户体验来说,https无法主动重定向非 ...

  9. react 字符串强转为html标签

    react中,富文本编辑 从数据库取出来 是带标签的 字符串,需要强转为 节点 <div dangerouslySetInnerHTML={{ __html: this.state.obj.ht ...

随机推荐

  1. 分数CSD编码

    有符号数系统:有三重值(1, 0, -1) SD编码:12 = 16 - 4 = 10000_0000 - 100 = 1_0000_0(-1)00; = 16 - 9 + 5 = 1_0000_00 ...

  2. Redhat 无线(Wifi)上网命令行配置

    小结两种命令行模式下配置无线wife的方法,实践测试通过(Red Hat Enterprise Linux release 6.0 Beta(Santiago)) 一.使用wpa_supplicant ...

  3. leetcode605

    public class Solution { public bool CanPlaceFlowers(int[] flowerbed, int n) { && flowerbed[] ...

  4. delphi 在桌面屏幕上模拟鼠标单击

    delphi 在桌面屏幕上模拟鼠标单击 procedure TFrmUnicom.Button1Click(Sender: TObject); var oldPoint, newPoint: TPoi ...

  5. 音频AAC编码浅析

    /* * unsigned long nSampleRate, // 采样率,单位是bps * unsigned long nChannels, // 声道,1为单声道,2为双声道 * unsigne ...

  6. ARCGIS中怎么去除重复的面?(转)

    ARCGIS中怎么去除重复的面? https://blog.csdn.net/gswwldp/article/details/66974522   第一种: 1.用polygon to line将面转 ...

  7. SaeMysql操作示例

    新浪sae的官方说明文档:http://apidoc.sinaapp.com/sae/SaeMysql.html Class SaeMysql 具体实现:http://apidoc.sinaapp.c ...

  8. Tensorflow Mask-RCNN训练识别箱子的模型运行结果(练习)

    Tensorflow Mask-RCNN训练识别箱子的模型

  9. Linux查看操作系统版本的几种方式

    Linux查看操作系统版本的几种方式: 1.uname -a 2.lsb_release -a 3.cat /etc/issue 4.cat /proc/version 5.cat /etc/redh ...

  10. Docker学习笔记_安装和使用mysql

    一.系统环境和准备 1.宿主机OS:Win10 64位 2.虚拟机OS:Ubuntu18.04 3.操作账号:docker 二.安装 1.搜索mysql镜像:docker search mysql 2 ...