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

этот код работать, когда, например:перенаправления HTTPS WWW к протоколу HTTPS без WWW в 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 

что проблема ?!

благодаря фот помогая

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

 Смежные вопросы

  • Нет связанных вопросов^_^