2017-02-05 202 views
0
<rule name="rd" stopProcessing="true"> 
     <match url="(.*)" /> 
     <conditions> 
     <add input="{HTTP_HOST}" pattern="^test\.com$" negate="true" /> 
     <add input="{HTTP_HOST}" pattern="^www.\test\.net$" negate="true" /> 
     </conditions> 
     <action type="Redirect" url="https://test.com/{R:0}" redirectType="Permanent" /> 
    </rule> 

此代码的工作WWW:重定向HTTPS WWW到https非在IIS

http://www.test.com => https://test.com 

http://www.test.net=> https://test.com 

但不工作时,网址为:

https://www.test.com => https://test.com 

https://www.test.net => https://test.com 

有什么问题?

感谢FOT帮助

+0

如果你的条件之一是'',它为什么会起作用? – haim770

+0

当url已经使用HTTPS时,整个规则根本就不适用 – haim770

+0

我写错了,编辑过的帖子 – Ali

回答

0

我知道你说你想这样做在IIS,但如果你能在应用程序中编辑Global.asax文件,你可以这样来做。

protected void Application_BeginRequest(object sender, EventArgs e) 
{ 
     #if !DEBUG 
     string HTTPhost = Request.ServerVariables["HTTP_HOST"]; 

     string domainName = "test"; 

     //assuming that the app will only be reached via .COM or .NET 
     string topLevel = HTTPhost.Split('.').LastOrDefault(); 

     //compare to make sure it only matches the root name with no trailing subdomain 
     //or to redirect to secure url if unsecured 
     if ((!HTTPhost.Split('.').FirstOrDefault().Equals(domainName, StringComparison.InvariantCultureIgnoreCase)) 
     || (!HttpContext.Current.Request.IsSecureConnection)) 
     { 
      Response.RedirectPermanent(
       "https://" 
       + domainName 
       + '.' 
       + topLevel 
       + HttpContext.Current.Request.RawUrl); 
      //RawUrl means any url information after the domain 
     } 
     #endif 
} 
相关问题