IIS7下面默认HTTPS绑定是无法指定主机头的,但我们可以通过手工修改IIS配置来实现主机头绑定。
打开C:Windowssystem32inetsrvconfigapplicationHost.config
定位到如下位置:
<bindings>
<binding protocol="https" bindingInformation="*:443" />
<binding protocol="net.tcp" bindingInformation="808:*" />
<binding protocol="net.pipe" bindingInformation="*" />
<binding protocol="net.msmq" bindingInformation="localhost" />
<binding protocol="msmq.formatname" bindingInformation="localhost" />
<binding protocol="http" bindingInformation="*:80:www.zhuimengzhu.com" />
</bindings>
找到https的配置项目,修改为:
<binding protocol="https" bindingInformation="*:443:www.zhuimengzhu.com" />
加上
<binding protocol="https" bindingInformation="*:443:zhuimengzhu.com" />
注意这里的www.console.com要换成你自己的域名,之后保存即可。
为了保证域名统一,将访问 http://zhuimengzhu.com、http://www.zhuimengzhu.com、https://zhuimengzhu.com 的域名都跳转到https://www.zhuimengzhu.com,IIS 可以进行如下配置 url重写 (需要安装 IIS UrlRewrite 模块,代码注释是为了方便理解,部署到线上请删除中文注释):
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="HostNameRule1">
<match url="(.*)" />
<!–匹配所有条件–>
<conditions logicalGrouping="MatchAny">
<!–当不是使用https协议访问的时候–>
<add input="{HTTPS}" pattern="^OFF$" />
<!–并且访问的host不是zhuimengzhu.com这种,例如www.zhuimengzhu.com–>
<add input="{HTTP_HOST}" pattern="^www.zhuimengzhu.com$" negate="true" />
</conditions>
<!–跳转到https–>
<action type="Redirect" url="https://www.zhuimengzhu.com/{R:1}" />
</rule>
<rule name="HTTPS redirect">
<match url="(.*)" />
<conditions>
<!–当使用HTTPS协议访问–>
<add input="{HTTPS}" pattern="^ON$" />
<!–当访问 https://zhuimengzhu.com的时候 –>
<add input="{HTTP_HOST}" pattern="^www.zhuimengzhu.com$" negate="true" />
</conditions>
<!–跳转到HTTPS–>
<action type="Redirect" url="https://www.zhuimengzhu.com/{R:1}" redirectType="SeeOther" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
然后保存