我的服务器是用的Windows Server IIS10,也是刚刚搬过来不久,之前HTTPS是验证通过的。
因为我比较懒,所以用的“BT面板”,设置了SSL和强制HTTPS,好像并不怎么理想。
今天发现我网站的百度HTTPS验证不通过,应该是搬过来之后,配置没有达到标准。
找了很多种方法去配置都验证不成功,我打算利用网站根目录的 web.config 文件实现自动跳转,网上大多数的规则写法都是一样的,不过好像只适用于IIS7、8。
代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="http redirect to https" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="^OFF$" />
<add input="{HTTPS_HOST}" pattern="^(localhost)" negate="true" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
如果您之前有配置文件,只需要添加 <rule> ... </rule> 部分即可。
最后在GG上找到了配置规则,可以适用于我的IIS10。
在 <rules> 标签下,添加如下代码:
<clear />
<rule name="Redirect to https" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="off" ignoreCase="true" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" appendQueryString="false" />
</rule>
注意,一定要加在最前面,否则 <clear /> 会去掉 config.web 中包含或继承来的引用,造成网站出错。
添加后保存,重启IIS服务器就可以实现跳转了。
需要注意的是:
1、IIS管理器内该网站的 SSL设置,“要求SSL”一定不要勾选,会造成 http 403 或者 500 错误,无法跳转 https。
2、SSL的客户证书一定要设置为“忽略”,否则手机访问时会提示“找不到任何证书”,应用“浏览器”请求使用证书。