2011-08-02 15 views
13

Zawsze, gdy ktoś wysyła żądanie za pośrednictwem protokołu HTTP, przepisuję adres URL, aby był to HTTPS. Jest to kod w pliku web.config:Błąd reguły przepisywania: Błąd HTTP 500.50 - Błąd modułu URL przepraszania adresu URL. Nie można rozwinąć wyrażenia "https://abc.com/{R:1}"

<rule name="Imported Rule 1-1" enabled="true" stopProcessing="true"> 
    <match url="^(?!https://).*" ignoreCase="false" /> 
    <conditions logicalGrouping="MatchAll"> 
     <add input="{SERVER_PORT}" pattern="80" ignoreCase="false" /> 
    </conditions> 
    <action type="Rewrite" url="https://abc.com/{R:1}" /> 
</rule> 

Jednak kiedy mogę przeglądać na stronie http: // otrzymuję błąd IIS

HTTP Error 500.50 - URL Rewrite Module Error. The expression "https://abc.com/{R:1}" cannot be expanded.

Jak mogę rozwiązać ten problem? Jestem całkowicie zdezorientowany.

+0

Dostaję to również teraz. Czy kiedykolwiek znalazłeś rozwiązanie? Jeśli tak, opublikuj go tutaj. –

Odpowiedz

14

Mecze są oparte na zera.

<action type="Rewrite" url="https://abc.com/{R:1}" /> 

Nie będzie działać, ponieważ masz tylko jeden mecz. Potrzebujesz:

<action type="Rewrite" url="https://abc.com/{R:0}" /> 

Ponadto, to nie zadziała, ponieważ możesz dopasować tylko ścieżkę pod katalogiem głównym witryny.

<match url="^(?!https://).*" ignoreCase="false" /> 

Wygląda na to, że sprawdzasz ssl. Spróbuj to zamiast:

 <conditions logicalGrouping="MatchAll" trackAllCaptures="false"> 
     <add input="{HTTPS}" pattern="^OFF$" /> 
     </conditions> 
-1

można przekierować przez web config do nadzieję, że pomoże pełną

<rule name="Redirect to WWW" stopProcessing="true"> 
    <match url=".*" /> 
    <conditions> 
     <add input="{HTTP_HOST}" pattern="^abc.com$" /> 
    </conditions> 
    <action type="Redirect" url="http://www.abc.com/{R:0}" redirectType="Permanent" /> 
</rule> 
Powiązane problemy