2014-10-06 18 views
10

Próbuję napisać regułę przepisywania adresów URL, aby wymusić połączenie HTTPS. To powinno się zawsze zdarzyć, z wyjątkiem sytuacji, gdy żądanie korzysta z localhost (np. http://localhost/mysite).URL IIS Przepisuj regułę https ignorując localhost

Zasadą jest skonfigurowany w następujący sposób:

<rule name="Redirect to https" enabled="true" stopProcessing="true"> 
     <match url="(.*)" negate="false" /> 
     <conditions trackAllCaptures="false"> 
      <add input="{HTTPS}" pattern="^OFF$" /> 
      <add input="{URL}" pattern="localhost" negate="true" /> 
     </conditions> 
     <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" /> 
</rule> 

Próbowałem również użyć^i^localhost localhost /(.*) jako wzorzec dla kondycji URL bez pomocy. Czy ktoś ma pomysł, dlaczego to nie działa i jakie powinno być rozwiązanie tego problemu?

+0

która wersja IIS? Może chcesz zaktualizować swoje pytanie z tym. – kkuilla

+0

W tej chwili używam go na IIS8. Ale już dostarczyłeś rozwiązanie. Wielkie dzięki. –

Odpowiedz

22

Twój kod powinien wyglądać tak zamiast

<rule name="Redirect to https" enabled="true" stopProcessing="true"> 
    <match url="(.*)" /> 
    <conditions logicalGrouping="MatchAll" trackAllCaptures="false"> 
     <add input="{HTTPS}" pattern="off" /> 
     <add input="{HTTP_HOST}" pattern="localhost" negate="true" /> 
    </conditions> 
    <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" /> 
</rule> 
+1

Jesteś mężczyzną! Wielkie dzięki! –

Powiązane problemy