http自动跳转https小记

因近期跌代更新ios/android后,由于担心ios https从17年起限制的问题,故目前我们将http更改为https,但既然支持https,故想将服务器直接更新为https,将原http请求自动转发至对应的https路径url

理论上应该很可行的,这种东西无非就是路由转发,经上网搜索后,查到一篇前辈的文章

http://blog.csdn.net/bona020/article/details/50807999,故引用这篇文章。后述核心内容均非原创,从该篇文章摘取

修改以下文件:IIS6.0 路径:C:\WINDOWS\Help\iisHelp\common\403-4.htm
IIS7.0以上 路径:C:\inetpub\custerr\zh-CN\403.htm
为以下内容
<HTML><HEAD><TITLE>该页必须通过安全通道查看</TITLE>
<META HTTP-EQUIV=”Content-Type” Content=”text/html; charset=GB2312″>
</HEAD><BODY>
<script type="text/javascript">
var url = window.location.href;
if (url.indexOf("https") < 0) {
url = url.replace("http:", "https:");
window.location.replace(url);
}
</script>
</BODY></HTML>
注释:IIS6中,站点属性-》目录安全性-》编辑中把“要求安全通道(SSL)”勾选上即可。
IIS7、8中,SSL设置-》把“要求SSL”勾选即可。

 

URL重写方式:

 

下载安装URL重写模块:Microsoft URL Rewrite Module

32位:http://download.microsoft.com/download/4/9/C/49CD28DB-4AA6-4A51-9437-AA001221F606/rewrite_x86_zh-CN.msi

64位:http://download.microsoft.com/download/4/E/7/4E7ECE9A-DF55-4F90-A354-B497072BDE0A/rewrite_x64_zh-CN.msi

ASP.NET站可直接修改web.config(与“6、IIS配置图示”效果相同),例如:见<rewrite>...</rewrite>节点

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="HTTP to HTTPS redirect" stopProcessing="true">
          <match url="(.*)" />
          <conditions>
            <add input="{HTTPS}" pattern="off" ignoreCase="true" />
          </conditions>
          <action type="Redirect" redirectType="Found" url="https://{HTTP_HOST}/{R:1}" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>

 

 

 

 

默认情况一个服务器的IIS只能绑定一个HTTPS也就是443端口

要实现多个站点对应HTTPS只能更改IIS配置

地址:C:\Windows\system32\inetsrv\config\applicationHost.config、

默认一个站点带一个这样的配置

    <binding protocol="https" bindingInformation="*:443" />

修改成:

      <binding protocol="https" bindingInformation="*:443:www.baidu.om" />

切记需要对应的每个站点都修改。

 

 

最后,如果服务器本地可以访问HTTPS外网不行则要考虑是网防火墙没开放443及是否用了反向代理这些。

 

IIS原配置为配置站点A:http协议+80端口,后购买了免费的阿里云SSL证书一年,按相关要求安装完证书后,同时在该A站点加入配置:https+443端口

我们服务器是64位,下载完安装后将webconfig中加入对应的rewrite节点重启后。

在浏览器中输入对应的http地址,看到自动跳转至https对应的地址

验证了多次均成功,很实用,故略作分享!