2011-08-02 20 views
13

Cuando alguien realiza una solicitud a través del protocolo HTTP, reescribo la url para convertirla en HTTPS. Este es el código en web.config:Error de regla de reescritura: HTTP Error 500.50 - URL Rewrite Module Error. La expresión "https://abc.com/{R:1}" no se puede expandir

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

Sin embargo, cuando hojeo en http: // me sale error de IIS

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

¿Cómo puedo resolver esto? Estoy completamente confundido.

+0

Me estoy poniendo esto también ahora. ¿Encontraste alguna solución? Si es así, publíquelo aquí. –

Respuesta

14

Las coincidencias se basan en cero.

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

No funcionará porque solo tiene una coincidencia. Necesita:

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

Además, esto no funcionará, ya que solo puede coincidir en la ruta debajo de la raíz del sitio.

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

Parece que está buscando SSL. Tal vez puedas probar:

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

Puede redirigir a través web.config a esperan que ayude a plena

<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> 
Cuestiones relacionadas