Estoy usando la respuesta dado aquí como la base para intentar agregar una regla de reescritura para mi web.archivo de configuración. Yo lo quiero para que coincida con cualquier url que no se está ejecutando en localhost con el fin de forzar https.

Aquí es 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 negativo lookaround en fin solo partido de la url de la que no se incluyen en «localhost» en la url. Pero esto no está funcionando.

Entonces, ¿cómo esta regla, a fin de que sólo reescribir no localhost url?

InformationsquelleAutor Yaakov Ellis | 2014-01-06

2 Comentarios

  1. 50

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

    El uso de un negate condición en contra de la localhost patrón debe hacer el truco.

    • Resultados en HTTP Error 500.50 - URL Rewrite Module Error.
    • Puedes intentar actualizado regla con negate="true"
    • Mismo error. Sospecho que puede estar relacionada con la acción hace referencia a una agrupación – {R:1} – que ya no se incluye en la coincidencia de expresión regular.
    • Sí que es cierto, permítanme sugerir que algo de eso también.
    • Si usted está usando los puertos (como localhost:6002), a continuación, buscar en @firstTimeCaller respuesta: stackoverflow.com/a/23554829/237858
  2. 43

    Añadir a anubhava del respuesta, puede reemplazar el elemento add para localhost con los siguientes 2 entradas para atender tanto localhost 127.0.0.1 y con la opción de puertos de e.g localhost:59400 que es el caso cuando la depuración a través de visual studio y de 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, que puede no ser deseable.

    • este trabajó para mí. anubhava la respuesta de no considerar el localhost:XXXX caso (el puerto)
    • esto funciona para mí, excepto si me vaya a la raíz («/»). entonces, por alguna razón, se está redirigiendo me a HTTPS.
    • Yo tengo el mismo problema cuando se navega en la raíz. No se como arreglar eso.
    • aquí está toda mi regla – parece estar trabajando… <nombre de la regla=»HTTP a HTTPS Redirigir» enabled=»true» stopProcessing=»true»> <partido url=»(.*)»/> <condiciones> <añadir entrada=»{HTTP_HOST}» matchType=»Patrón» pattern=»^localhost(:\d+)?$» negar=»true» /> <añadir entrada=»{HTTP_HOST}» matchType=»Patrón» pattern=»^127\.0\.0\.1(:\d+)?$» negar=»true» /> <añadir entrada=»{SERVER_PORT_SECURE}» pattern=»^0$» /> </condiciones> <tipo de acción=»Redirect» url=»https://{HTTP_HOST}/{R:1}» redirectType=»Permanente» /> </regla>
    • Yo tenía el mismo problema de acceso a la raíz & se resuelve estableciendo el siguiente atributo en las condiciones elemento: logicalGrouping=»MatchAll». Así que ahora mi elemento es: <condiciones logicalGrouping=»MatchAll»>

Dejar respuesta

Please enter your comment!
Please enter your name here