Pregunta

¿Existe una manera limpia de redirigir todos los intentos de ir a una versión HTTP:// de un sitio a su equivalente HTTPS://?

¿Fue útil?

Solución

Creo que la forma más limpia es la descrita. aquí en IIS-aid.com.Es solo web.config, por lo que si cambia de servidor no tiene que recordar todos los pasos que siguió con la página de error personalizada 403.4 u otros permisos especiales, simplemente funciona.

<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="HTTP to HTTPS redirect" stopProcessing="true">
          <match url="(.*)" />
            <conditions>
              <add input="{HTTPS}" pattern="off" ignoreCase="true" />
            </conditions>
            <action type="Redirect" redirectType="Permanent" url="https://{HTTP_HOST}/{R:1}" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>

Otros consejos

La solución más fácil y limpia que encontré fue

  1. En Configuración SSL -> requerir SSL

  2. En páginas de error -> En error 403.4 -> Redirigir al sitio HTTPS

  3. En Páginas de error -> Editar configuración de funciones...-> Establecer errores detallados para solicitudes locales y páginas de error personalizadas para solicitudes remotas

La ventaja es que no requiere líneas de código adicionales.La desventaja es que te redirige a una URL absoluta.

Una forma limpia cambia solo el esquema de URL de http -> https y deja todo lo demás equivalente.Debe estar del lado del servidor para que no haya problemas con el navegador.

JPPinto.com tiene Instrucciones paso a paso sobre cómo se hace esto, excepto que usan javascript (HttpRedirect.htm) en lugar de una redirección del lado del servidor.Por alguna razón, no pude hacer que IE ejecutara javascript si tenía habilitado "Mostrar mensajes de error HTTP amigables", que está activado de forma predeterminada.Otra cosa con el script es que la redirección a la ruta no funcionó ni siquiera en FF o Chrome.El script siempre redirige a la raíz.(Tal vez me he perdido algo, porque debería redirigir a la ruta).

Por estos motivos he utilizado una página ASP para la redirección.La desventaja es, por supuesto, que esto requiere que el ASP clásico esté habilitado en el servidor.

OpsanBlog tiene un Script ASP e instrucciones que funcionan bien con IIS6.

He tenido algunos problemas al utilizar este método con IIS7.Problemas de interfaz de usuario principalmente, ya que IIS7 hace que sea muy fácil pasar por alto algo.

  • Primero, debe instalar ASP como una función de rol de servidor web.
  • En segundo lugar, usar un directorio virtual no funcionó como se esperaba en IIS7 y no intenté depurar esto.En cambio, puse el archivo en la carpeta raíz del sitio y utilicé la URL '/sslredirect.asp' en la página de error 403.4 para hacer referencia a él.
  • Por último, la parte más complicada, tú NO debe aplicar SSL para SSLRedirect.asp.De lo contrario, obtendrá un error 403.4.Para hacer esto, seleccione el archivo en la 'Vista de contenido' de IIS7 y cambie a 'Vista de características' para poder editar la configuración de SSL para un solo archivo y deshabilitar la casilla de verificación 'Requerir SSL'.

El administrador de IIS debería mostrar el nombre del archivo en el encabezado.

Global.asax

protected void Application_BeginRequest()
{
if (!Context.Request.Url.AbsoluteUri.Contains("localhost") && !Context.Request.IsSecureConnection)
Response.Redirect(Context.Request.Url.ToString().Replace("http:", "https:"));
}

Utilizo ASP clásico (intranet) y en las páginas que requieren iniciar sesión, el archivo de inclusión de inicio de sesión realiza la redirección:

if Request.ServerVariables("SERVER_PORT_SECURE") <> "1" or Request.ServerVariables("HTTPS") <> "on" then 
    Response.Redirect "https://" & Request.ServerVariables("SERVER_NAME") & Request.ServerVariables("URL")
end if

Por supuesto, esto no incluye datos GET o POST.Entonces, en efecto, es una redirección limpia a su página segura.

Creo que por "limpiamente" te refieres a una redirección 300.Configuración para muchos servidores e idiomas. aquí.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top