iis-7 - redireccionar - url rewrite
Reescribiendo URL de https:// a http:// en IIS7 (4)
Estoy tratando de reescribir urls desde el formulario:
https://example.com/about
a la forma
http://example.com/about
utilizando la reescritura de URL de IIS7 :
<!-- http:// to https:// rule -->
<rule name="ForceHttpsBilling" stopProcessing="true">
<match url="(.*)billing/(.*)" ignoreCase="true" />
<conditions>
<add input="{HTTPS}" pattern="off" ignoreCase="false" />
</conditions>
<action type="Redirect" redirectType="Found" url="https://{HTTP_HOST}{REQUEST_URI}" />
</rule>
<!-- https:// to http:// rule -->
<rule name="ForceNonHttps" stopProcessing="true">
<match url="(.*)billing/(.*)" ignoreCase="true" negate="true" />
<conditions>
<add input="{SERVER_PORT}" pattern="^443$" />
</conditions>
<action type="Redirect" redirectType="Found" url="http://{HTTP_HOST}{REQUEST_URI}" />
</rule>
Estoy perdido He estado navegando por la web en busca de ejemplos y probando cada sintaxis que se me ocurre. Las reglas de reescritura que especifico simplemente no parecen funcionar para ninguna solicitud de https, como si todas las solicitudes de https://
totalmente invisibles para el motor de reescritura.
las reglas funcionan bien; ver respuesta a continuación.
Esta publicación es un poco antigua, pero quería responder. Estoy usando ASP.Net MVC3, y la respuesta anterior de Fabio no funcionó para mí. La solución más fácil que se me ocurrió para manejar el redireccionamiento de https a http, al mismo tiempo que permitía que las páginas https válidas para solicitar contenido seguro fuera solo para agregar reglas de lista blanca sobre mis https / http redirects:
<rule name="WhiteList - content folder" stopProcessing="true">
<match url="^content/"/>
<conditions logicalGrouping="MatchAll" trackAllCaptures="false"/>
<action type="None"/>
</rule>
<rule name="Redirect to HTTPS" stopProcessing="true">
<match url="(.*)billing/(.*)" ignoreCase="true" />
<conditions>
<add input="{HTTPS}" pattern="^OFF$" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/billing/" redirectType="SeeOther" />
</rule>
<rule name="ForceNonHttps" stopProcessing="true">
<match url="(.*)billing/(.*)" ignoreCase="true" negate="true" />
<conditions>
<add input="{SERVER_PORT}" pattern="^443$" />
</conditions>
<action type="Redirect" redirectType="Found" url="http://{HTTP_HOST}{REQUEST_URI}" />
</rule>
Resulta que tenía puerto: ¡443 estaba vinculado a un sitio web diferente!
Las reglas de reescritura anteriores funcionan bien para http: // a https: // reescritura y viceversa, aunque podría haber formas más óptimas o simples de hacerlo.
Deje esta pregunta aquí para que los futuros viajeros la encuentren, ya que no vi muchos buenos ejemplos de https: // para http: // escenario de reescritura en la web.
Su solución funciona, pero el problema es: su segunda instrucción matar la primera instrucción para cualquier enlace no es (. ) Billing / (. ), Incluidos sus css, js e imágenes.
Puede usar esta regla https a http:
<rule name="HTTPS to HTTP redirect" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{RequiresSSL:{R:1}}" pattern="(.+)" negate="true" />
<add input="{HTTPS}" pattern="on" ignoreCase="true" />
<add input="{REQUEST_URI}" pattern="^(.+)/.(?!aspx)" negate="true" />
</conditions>
<action type="Redirect" redirectType="Found" url="http://{HTTP_HOST}/{R:1}" />
</rule>
por favor, considere en primer lugar vincular https a su sitio web para hacer que el módulo de redireccionamiento a continuación sea esencial (así que vincule su aplicación web con un certificado autofirmado o válido )
parte final en web.config para redirigir https a http :
<rewrite>
<rules>
<rule name="Force NonHTTPS" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="on" />
</conditions>
<action type="Redirect" url="http://{HTTP_HOST}/{REQUEST_URI}" />
</rule>
</rules>
</rewrite>
si necesita la GUI de IIS equivalente en el módulo de reescritura, consulte la imagen a continuación
fuente: mira tech-net para más detalles y guía paso a paso.