Estoy trabajando en un sitio web de carrito de compras y me gustaría redirigir al usuario a una página HTTPS cuando ingrese sus detalles de facturación y mantener la conexión HTTPS para las siguientes páginas hasta que cierre la sesión.
¿Qué necesito instalar en el servidor (estoy usando Apache) para hacer esto, y cómo se puede hacer esta redirección desde PHP?
if( $_SERVER['HTTPS'] == "off")
para que este código funcionara. Creo que es porque estoy en IIS, no en Apache como el OP.Esta es una buena forma de hacerlo:
fuente
!(isset($_SERVER['HTTPS']) && ($_SERVER['HTTPS'] == 'on'
siempre será falsa, ya que si la última parte es verdadera, la primera será falsa.Redirigir de HTTP a HTTPS con PHP en IIS
Estaba teniendo problemas para lograr que la redirección a HTTPS funcionara en un servidor de Windows que ejecuta la versión 6 de MS Internet Information Services (IIS) . Estoy más acostumbrado a trabajar con Apache en un host Linux, así que busqué ayuda en Internet y esta fue la pregunta de Stack Overflow de mayor rango cuando busqué "php redirect http to https" . Sin embargo, la respuesta seleccionada no funcionó para mí.
Después de algunas pruebas y errores, descubrí que con IIS,
$_SERVER['HTTPS']
está configuradooff
para conexiones que no son TLS. Pensé que el siguiente código debería ayudar a cualquier otro usuario de IIS que llegue a esta pregunta a través del motor de búsqueda.Editar : desde otra respuesta de Stack Overflow , una solución más simple es verificar
if($_SERVER["HTTPS"] != "on")
.fuente
apache
, publiqué esta respuesta en beneficio de otros usuarios de IIS (similar a la situación en la que me encontraba) que pueden encontrar esta página a través del motor de búsqueda. Me suscribo a la opinión de que las respuestas son en beneficio de la comunidad en su conjunto y no solo del OP.Siempre puedes usar
para redirigir a la URL de guardado.
Pero recomendaría hacerlo mediante .htaccess y las reglas de reescritura de Apache.
fuente
En mi servidor de beanstalk de AWS, no veo la variable $ _SERVER ['HTTPS']. Veo $ _SERVER ['HTTP_X_FORWARDED_PROTO'] que puede ser 'http' o 'https', así que si está alojando en AWS, use esto:
fuente