2014-09-30 30 views
5

Próbuję wymusić HTTP na HTTPS w witrynie Azure Web za pomocą reguły przepisywania adresu URL web.config. Chciałbym regułę która encompases oba z następujących scenariuszy:Wymuś protokół HTTPS na platformie Azure i dopisz adres URL

HTTP: //site.domain.com/sitefolder do HTTPS: //site.domain.com/sitefolder

http: // strona .domena.com/sitefolder/default.aspx do HTTPS: //site.domain.com/sitefolder/default.aspx

Jeśli śledzę this guide mogę zmusić HTTP na HTTPS, ale URL zmienia się na https: // strona .domain.com bez dołączonego katalogu/sitefolder lub /sitefolder/default.aspx.

Oto, co mam w tej chwili. HTTPS jest zmuszony, ale pełny adres URL nie jest wliczone:

<rule name="Redirect to HTTPS" stopProcessing="true"> 
    <match url="(.*)" /> 
    <conditions> 
    <add input="{HTTPS}" pattern="Off" /> 
    </conditions> 
    <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Permanent" /> 
</rule> 

Odpowiedz

5

Jest to prosta zasada, która sprawia, że ​​poprawne przekierowanie do HTTPS na Azure strony:

<rule name="Redirect to https"> 
     <match url="(.*)"/> 
     <conditions> 
     <add input="{HTTPS}" pattern="Off"/> 
     <add input="{REQUEST_METHOD}" pattern="^get$|^head$" /> 
     </conditions> 
     <action type="Redirect" url="https://{HTTP_HOST}/{R:1}"/> 
    </rule> 

Można go przetestować tutaj: http://double.azurewebsites.net (take notatka na HTTP w łączu) Nie mam tutaj żadnych innych reguł. Powyższa reguła poprawnie przekierowuje do głębokich linków, tj. http://double.azurewebsites.net/Home/About

+1

Dzięki, to działało dokładnie. Twoje zdrowie. – MK8

+0

@ MK8 wziąć pod uwagę, że tylko dla głowy i get (co nie oznacza, że ​​inne żądanie zostanie skierowane do HTTPS, jak POST) – Ron

+0

Wiele postów na blogu na ten temat, ale jest to jedyna zasada, która faktycznie działa. –

Powiązane problemy