2017-02-05 4 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> 

dieser Code arbeiten, wenn zum Beispiel:umleiten https www https nicht www in iis

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

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

aber nicht funktioniert, wenn Urls ist:

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

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

was Problem ?!

dank fot

+0

Warum würde es funktionieren, wenn eine Ihrer Bedingungen ''? – haim770

+0

Wenn die URL bereits HTTPS verwendet, würde die gesamte Regel einfach nicht angewendet werden – haim770

+0

Ich schrieb Fehler, bearbeitet Post – Ali

Antwort

0

helfen Ich weiß, Sie haben gesagt Sie dies in IIS tun wollen, aber wenn Sie die Datei Global.asax in der Anwendung bearbeiten können, können Sie es auf diese Weise tun.

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 
} 
Verwandte Themen