regex - request_uri - Reescribe la regla a HTTPS excepto cuando esté en localhost
web config rewrite condition (2)
Agregando a la answer de anubhava, puede reemplazar el elemento agregar para localhost con las siguientes 2 entradas para atender a localhost y 127.0.0.1 con puertos opcionales, por ejemplo, localhost: 59400, que es el caso cuando se realiza la depuración a través de Visual Studio e IIS
<add input="{HTTP_HOST}" matchType="Pattern" pattern="^localhost(:/d+)?$" negate="true" />
<add input="{HTTP_HOST}" matchType="Pattern" pattern="^127/.0/.0/.1(:/d+)?$" negate="true" />
Con la respuesta original, localhost: 123 sería redirigido a https, lo que puede no ser deseable.
Estoy usando la respuesta dada aquí como la base para intentar agregar una regla de reescritura a mi archivo web.config. Quiero que coincida con cualquier URL que no se esté ejecutando en localhost para forzar https.
Aquí está lo que tengo ahora mismo:
<system.webServer>
<rewrite> <!-- force https - https://stackoverflow.com/a/15119044/51 -->
<rules>
<rule name="Redirect HTTP to HTTPS" stopProcessing="true">
<match url="^((?!localhost).)*$"/>
<conditions>
<add input="{HTTPS}" pattern="^OFF$"/>
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="SeeOther"/>
</rule>
</rules>
</rewrite>
</system.webServer>
Estoy tratando de usar un lookaround negativo para que solo coincida con las URL que no incluyen "localhost" dentro de la URL. Pero esto no está funcionando.
Entonces, ¿cómo debería configurarse esta regla para reescribir solo las URL no locales?
Prueba esta condición:
<system.webServer>
<rewrite>
<rules>
<rule name="Redirect HTTP to HTTPS" stopProcessing="true">
<match url="^(.*)$"/>
<conditions>
<add input="{HTTPS}" pattern="^OFF$"/>
<add input="{HTTP_HOST}" matchType="Pattern" pattern="^localhost$" negate="true" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="SeeOther"/>
</rule>
</rules>
</rewrite>
</system.webServer>
Usar una condición de negate
contra el patrón localhost
debería hacer el truco.