星空云始创于2007,高品质SSD云服务器,优质IDC服务商,中国最早的VPS云服务器提供商之一

IIS下http转发https和URL重写例外域名的实例

技术文档 星空云

目前https网站已经变为主流,网站具有用户注册及在线付款等功能的一般都为https

网站如何实现https不是这里讨论的重点,有需要的可以百度搜索。

我们主要来讲一下,在IIS下,网站已经成为https以后,如何把http访问自动转发到https

要把http://www.xxx.com 转发 https://www.xxx.com

其实非常简单,只要在web.config添加如下代码:

<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>

但本文重点说明的是:当网站绑定多个域名时,要例外某个域名怎么办?

很简单,在<add input="{HTTPS}" ...... 这一行上面加入:

<add input="{HTTP_HOST}" pattern="localhost" negate="true" />

pattern的值可以是localhost可以是127.0.0.1或者www.aaa.com等任何一个域名;

这样,比如刚才的代码,当访问http://127.0.0.1时,直接显示,而不会转为https://127.0.0.1

当访问其他任何域名时,转发到https,至此问题解决。

这个功能可能用到的人不多,但是如果你的网站有程序要求是需要本地访问的,而且不需要https,那么你就需要用到它。

完整的代码如下:

<system.webServer>

   <rewrite>
     <rules>
       <rule name="HTTP to HTTPS redirect" stopProcessing="true">
         <match url="(.*)" />
         <conditions>

           <add input="{HTTP_HOST}" pattern="127.0.0.1" negate="true" />

           <add input="{HTTPS}" pattern="off" ignoreCase="true" />
         </conditions>
         <action type="Redirect" redirectType="Found" url="https://{HTTP_HOST}/{R:1}" />
       </rule>
     </rules>
   </rewrite>

 </system.webServer>


参考文献:https://www.cnblogs.com/haogj/p/5041720.html

发表评论:

验证码