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

时间:2022-09-10 19:26:34

最近接到一个需求,客户希望无论是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管理控制台,双击“服务器证书”。

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

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

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

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

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

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

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

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

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

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

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

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

*SSL设置不要勾选

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

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

重定向

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

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

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

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

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

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

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

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

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

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

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

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

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

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

模式:

(.*)

条件:

{HTTP} 与模式匹配  ^OFF$

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

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

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

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

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

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

重写URL

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

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

新建一个空白入站规则

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

我们来测试下这个模式

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

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

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

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

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

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

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

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

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

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

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

操作类型是重写

IIS将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

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

  4. Linux系统将http转为https

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

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

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

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

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

  7. WiFi认证中HTTPS重定向

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

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

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

  9. Chrome禁止http自动转为https

    解决方法 在Chrome浏览器地址栏输入chrome://net-internals/#hsts 在Delete domain security policies 中输入要删除自动转换的域名 原因 将 ...

随机推荐

  1. iOS快速集成友盟社会化分享功能(v6&period;1&period;1)

    1.  U-Share SDK集成 1.1 下载U-Share SDK 通过iOS社会化组件选择所需的社交平台后进行下载,下载链接http://dev.umeng.com/social/ios/sdk ...

  2. gulp整理

    gulp基于node 1.全局安装gulp: $ npm install --global gulp 2.前往项目目录,然后安装作为项目的开发依赖(devDependencies): $ npm in ...

  3. FreeBSD从零开始---安装后配置(一)

    一.安装后配置   上次我们说到FreeBSD的安装,这次我们说FreeBSD安装后的配置和简单优化方法.   安装完BSD只是服务器提供服务这条万里长征路的开始,还需要一些基本的设定和优化.不过实际 ...

  4. 数组遍历map和each使用

    <body> <input type="/> <input type="/> <input type="/> </b ...

  5. python版去UTF-8 BOM

    今天给app弄银联支付接口.直接copy银联的sdk.结果.安卓和ios始终报json格式错误.找了半天.都没找到问题.最后怀疑可能是BOM破坏了json的数据格式转换.验证后确认是BOM的问题.为方 ...

  6. 三栏布局,div左右盒子是定宽,中间是自适应

    用弹性布局flex: 给父盒子加个display:flex; 给中间盒子设flex=1; /* 弹性盒子布局*/ .wrap{ width: 100%; height: 90px; display: ...

  7. 关于mvc中传递匿名对象,view中无法解析

    最近做项目用到MVC,发现用linq查询得到的数据是匿名类型对象,通过模型绑定.或者ViewBag.ViewData进行数据传递后,View解析报错:“object 未包含xx的定义”: 没找到好的解 ...

  8. Python Redis list

    List操作,redis中的List在在内存中按照一个name对应一个List来存储. 注:列表存入 从右到左 如图: lpush(name,values) # 在name对应的list中添加元素,每 ...

  9. HashMap和LinkedHashMap区别

    import java.util.HashMap; import java.util.Iterator; import java.util.LinkedHashMap; import java.uti ...

  10. MongoDB高级操作&lpar;2&rpar;

    查询方法-常用查询方法 查询多条数据 --db.集合名称.find({条件文档}) 查询一条数据 --db.集合名称.findOne({条件文档}) 结果格式化 --pretty()方法 --db.集 ...