windows+IIS整站http强制跳转至https解决方案
当前位置:首页 - 代码技巧 - windows+IIS整站http强制跳转至https解决方案

网站随潮流开启了https访问,但是发现除了首页http会强制跳转到HTTPS页面外,其他内容页面http依旧可以访问,且并不跳转,看了很多方法都是通过重写伪静态跳转,不过重写后依旧没什么效果,于是这里提出2个解决方案供大家使用。

方案1、

IIS 不用URL重定向搞定http强制跳转至https方法,要求: 在这之前,视为证书已经安装好,且默认http默认正常访问的。思路:既然选择 要求SSL 提示403错误,那为什么不在403错误页面加上强制js由http到https?

1、安装证书(不是本文重点,推荐使用宝塔系统,一键部署ssL,很方便,很强大)

宝塔部署SSL.jpg

证书部署好后,http及https均可正常访问就可以进行下一步了,如果不行请继续调试。

2、打开IIS面板,“SSL设置” --> 勾上“要求SSL”+  客户证书 "忽略"

3、  配置好了之后,现在直接访问http,即80端口访问会提示403错误

4、这里就是关键了,在服务器找到403错误页面,一般都是在IIS默认安装位置,如自定义请修改自定义位置,一般在  (C:\inetpub\custerr\zh-CN\403.htm),用写字板编辑打开,在<head>标签中加入

<script type="text/javascript">  
    var url=window.location.href;  
    url=url.replace("http:","https:")  
    window.location.replace(url);
</script>

一般情况下修改好后的403.htm全部内容为:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script type="text/javascript">  
    var url=window.location.href;  
    url=url.replace("http:","https:")  
    window.location.replace(url);
</script>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312"/>
<title>403 - 禁止访问: 访问被拒绝。</title>
<style type="text/css">
<!--
body{margin:0;font-size:.7em;font-family:Verdana, Arial, Helvetica, sans-serif;background:#EEEEEE;}
fieldset{padding:0 15px 10px 15px;} 
h1{font-size:2.4em;margin:0;color:#FFF;}
h2{font-size:1.7em;margin:0;color:#CC0000;} 
h3{font-size:1.2em;margin:10px 0 0 0;color:#000000;} 
#header{width:96%;margin:0 0 0 0;padding:6px 2% 6px 2%;font-family:"trebuchet MS", Verdana, sans-serif;color:#FFF;
background-color:#555555;}
#content{margin:0 0 0 2%;position:relative;}
.content-container{background:#FFF;width:96%;margin-top:8px;padding:10px;position:relative;}
-->
</style>
</head>
<body>
<div id="header"><h1>服务器错误</h1></div>
<div id="content">
 <div class="content-container"><fieldset>
  <h2>403 - 禁止访问: 访问被拒绝。</h2>
  <h3>您无权使用所提供的凭据查看此目录或页面。</h3>
 </fieldset></div>
</div>
</body>
</html>

5、然后测试一下,输入http就会先跳转到403错误页面,再跳转到https://{HTTP_HOST}/xxx 页面啦!

方案2、

直接在你的模板footer或header文件在<head>标签中加入里插入使用 js ,使其强制 http 到 https。

<script type="text/javascript">
   var targetProtocol = "https:";
   if (window.location.protocol != targetProtocol)
   window.location.href = targetProtocol +
   window.location.href.substring(window.location.protocol.length);
</script>

这样2个方法一般情况下可以解决大部分站长的问题,最后,如果服务器本地可以访问HTTPS外网不行则要考虑是网防火墙没开放443及是否用了反向代理这些了。



共有 4 条评论

  1. avatar

    无聊快活   2017-09-17 10:14 回复

    方法齐全,感谢分享,正好能用到。

    1. avatar

      muzi   2017-09-17 10:15 回复

      我也是转载于网络,加了一些自己的理解,很高兴能帮到你!

      1. avatar

        无聊快活   2017-09-17 10:24 回复

        我日,这么屌,你回复我还能收到邮件!而且博主还秒回?什么功能

        1. avatar

          muzi   2017-09-17 10:25 回复

          这个就是zblog的一个回复插件,确实挺方便的

Top

分享:

支付宝

微信

如果问题完美解决了,可以给木子我打赏,6元就够我吃个泡面,感恩不尽!