首先要明确我们的需求,比如我们的网站启用了SSL全站加密,那么默认浏览器进入的地址是:http://www.csdn.net ,我需要将http://www.csdn.net自动跳转到https://www.csdn.net 的入口中去,不然还是会有没加密的路径可以进行访问。
在同一个网站上要绑定http的80端口和https的443端口,如下图:
明确需求之后我们再来说下需要准备的工具和环境:
URL ReWrite工具,下载地址:https://www.iis.net/downloads/microsoft/url-rewrite
如果无法下载,可以去从Web Platform Installer里面进行安装吧。Web Platform Installer下载地址
下载之后安装
安装之后,我们在IIS中就能看到重写Url的操作按钮了。
选择某一个站点中的URL重写,我们称之为单独的非全局配置。
在右侧点击添加规则,然后选择空白规则,然后进行规则的配置。
输入类型 | 格式 | 模式 | 忽略大小写 | 备注 |
---|---|---|---|---|
{HTTPS} | 与模式匹配 | ^OFF$ | YES | 此项用来匹配你的请求是HTTPS还是HTTP |
{HTTPS_HOST} | 与模式不匹配 | ^(localhost) | YES | 如果你是本地的localhost不会重定向到SSL |
在操作属性中,重定向的URL:https://{HTTP_HOST}/{R:1} ,然后选中 附加查询字符串以及重定向类型为302 即可。
说明
条件输入字符串中的值就是服务器变量,而具体使用哪些服务器变量则与匹配类型有关
这里我们挑选最常使用的匹配类型:与模式匹配。这种模式最常使用的服务器变量类型如下:QUERY_STRING、HTTP_HOST、SERVER_PORT、SERVER_PORT_SECURE、REQUEST_URI。
条件输入字符串的值为服务器变量
假设向下面的URL地址发送一个请求:https://csdn.net/Home/Index?page=1&tid=11,那么这些变量的含义如下:
1.QUERY_STRING 服务器变量所包含的是 page=1&tid=11这部分,表示URL的参数字符串
2.HTTP_HOST 服务器变量所包含的部分是shiyousan.com,表示所请求的主机域名 SERVER_PORT
3.服务器变量所包含的部分是 80,表示服务器的端口 SERVER_PORT_SECURE
4.服务器变量所包含的部分是0,HTTPS请求为OFF,表示接受请求的服务器端口是否为安全端口时,是为1,否则为0,一般来说如果是HTTPS请求则为安全端口,即为1,HTTPS为ON。
5.REQUEST_URI 服务器变量所包含的部分是/Home/Index?page=1&tid=11,就是除了主机域名外剩下的URL地址字符串和参数字符串。