Estoy trabajando en un sitio web que utiliza la función de reescritura de URL de IIS 7 para hacer un redireccionamiento permanente de example.com a www.example.com, así como también reescrituras de nombres de dominio similares al "principal", como por ejemplo desde www.examples.com a www.example.com.Reescritura de URL de IIS7: ¿Cómo no eliminar el protocolo HTTPS de la URL reescrita?
Esta regla de reescritura, que se muestra a continuación, ha funcionado bien desde hace un tiempo. Sin embargo, recientemente agregamos compatibilidad con HTTPS y notamos que si los usuarios visitan una de las URL que se reescribirán en www.example.com, se eliminará HTTPS. Por ejemplo, si un usuario visita https://example.com, se le redirige a http://www.example.com, mientras que nos gustaría que se envíe a https://www.example.com.
Esta es la regla de reescritura de interés (en Web.config):
<rule name="Canonical Host Name" stopProcessing="true">
<match url="(.*)" />
<conditions logicalGrouping="MatchAny">
<add input="{HTTP_HOST}" pattern="^example\.com$" />
<add input="{HTTP_HOST}" pattern="^(www\.)?example\.net$" />
<add input="{HTTP_HOST}" pattern="^(www\.)?example\.info$" />
<add input="{HTTP_HOST}" pattern="^(www\.)?examples\.com$" />
</conditions>
<action type="Redirect" url="http://www.example.com/{R:1}" redirectType="Permanent" />
</rule>
Como se puede ver, la URL del elemento de acción atributo apunta directamente a la dirección http: //, por lo que entiendo por qué se redirige https://example.com a http://www.example.com. Mi pregunta es, ¿cómo soluciono esto? Intenté (ingenuamente) simplemente colocar la parte http: // del atributo url, pero eso no funcionó.
Parece ser que simplemente dejando 'http: //' fuera de la URL de redireccionamiento hará que IIS 7.5 para usar el protocolo de la solicitud entrante. – HABO