IIS将http强转为https(重定向和重写)
最近接到一个需求,客户希望无论是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重写模块成功后,在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时,匹配规则和条件还是得按照重定向的写(名字随便)

操作类型是重写

就我此次需求而言,选择的还是重定向,因为客户要求地址栏发生变化。
完成。
IIS将http强转为https(重定向和重写)的更多相关文章
- 项目通过nginx强转为https访问后,代码中重定向的连接又变成了http协议,导致点击页面按钮,后台逻辑处理完后重定向报错了
修改如下,需要在nginx对应的server下的location中增加配置,使重定向的地址协议取当前链接的协议,而不是nginx访问tomcat的协议,因为nginx访问tomcat是http的,并没 ...
- Apache之Rewrite和RewriteRule规则梳理以及http强转https的配置总结
一. 简单实例介绍一般来说,apache配置好http和https后,如果想要做http强转到https,需要设置url重定向规则,大致需要下面几个步骤即可完成配置: 1)在httpd.conf文件里 ...
- IIS 实现http重定向https(亲测有效:解决URL重写模块配置https重定向不生效的问题)
前言 以前部署网站的时候,都是通过代码来实现http重定向https,最近在部署个人网站的时候,突发奇想可不可通过IIS来实现无代码的重定向呢? 在一番操作猛如虎的搜索引擎操作后,发现只有google ...
- iis设置http重置到https
http://www.cnblogs.com/tangge/p/4259749.html 1.购买SSL证书,参考:http://www.cnblogs.com/yipu/p/3722135.html ...
- Linux系统将http转为https
想把网站由http访问转变为https访问并没有想象中那么难,网上查了一些资料,想要转为https需要SSL安全证书,这里推荐一款景安网络的证书,可以免费试用一年时间,自己拿来实践还是很不错的选择. ...
- java里null强转为某个类会报错吗?
1.定义一个User类如下: /** * @author lizhibiao * @date 2018/11/27 17:21 */public class User{ private String ...
- SPRING IN ACTION 第4版笔记-第九章Securing web applications-011-把敏感信息请求转为https(requiresChannel())
1.把包含敏感信息的请求转为https请求,则较为安全,但如何只把有需要安全的请求转为https,而不是不加分辩就把所有请求都转为https呢?可以用requiresChannel() @Overri ...
- WiFi认证中HTTPS重定向
问题描述 在引入WiFiDog实现上网认证功能中,有2个绕不过的问题:https重定向和Select检测问题,前者非要求用户访问80端口,后者导致效率较低下.就用户体验来说,https无法主动重定向非 ...
- react 字符串强转为html标签
react中,富文本编辑 从数据库取出来 是带标签的 字符串,需要强转为 节点 <div dangerouslySetInnerHTML={{ __html: this.state.obj.ht ...
随机推荐
- 安装用于跨平台移动开发的 Visual C++
安装用于跨平台移动开发的 Visual C++ Visual Studio 2015 若要了解有关 Visual Studio 2017 RC 的最新文档,请参阅 Visual Studio 20 ...
- java代码List接口和Arraylist类
总结: package clientFrame; import java.util.*; //集合类 List是一个接口.ArrayList是一个类 public class ArraylitTest ...
- 事件调度器及C++中的使用
转自:http://blog.ch-wind.com/ue4-event-dispatcher-and-delegate/ 事件调度器非常的适合在各个蓝图之间实现通信功能. 当前UE4版本4.8.3. ...
- C# 面向切面编程--监控日志记录方案
背景:现在公司整体在做监控平台,要求把各个部分的细节都记录下来,在前台页面上有所显示,所以现在需要做的就是一个监控日志的记录工作,今天讲的就是渲染监控日志的例子. 现状:当前的渲染程序没有为监控日志记 ...
- 【linux】查看进程使用的端口和端口使用情况
netstat -a 查看所有服务端口 netstat -tln 查看当前使用的端口 ps命令查看进程的id: ps aux | grep ftp 或者 pidof Name netstat命 ...
- spark编译安装 spark 2.1.0 hadoop2.6.0-cdh5.7.0
1.准备: centos 6.5 jdk 1.7 Java SE安装包下载地址:http://www.oracle.com/technetwork/java/javase/downloads/java ...
- 斯坦福CS229机器学习课程笔记 Part1:线性回归 Linear Regression
机器学习三要素 机器学习的三要素为:模型.策略.算法. 模型:就是所要学习的条件概率分布或决策函数.线性回归模型 策略:按照什么样的准则学习或选择最优的模型.最小化均方误差,即所谓的 least-sq ...
- django dynamic model
django model 首先对于一个习惯用django model的骚年来说,你肯定对django model自定制用的很熟悉,但突然让你用django dynamic model,也许会有很多人懵 ...
- POJ1012(约瑟夫问题)
1.题目链接地址 http://poj.org/problem?id=1012 2k个人,前面k个是好人,后面k个是坏人,找一个数t,每数到第t时就去掉,使所有坏人在好人之前被杀掉. 思路:约瑟夫公式 ...
- saltstack系列(五)——zmq扩展(一)
问题 假设我们的一个客户端既有pull又有sub,他们两个都需要接收消息,该如何协调呢,毕竟,当一个socket要收消息的时候,函数recv是阻塞的,所以,我们第一个思路是不让它阻塞? 实例代码: # ...