Pregunta

¿Cómo se redirige HTTPS a HTTP?Es decir, lo contrario de lo que (aparentemente) todo el mundo enseña.

Tengo un servidor en HTTPS por el que pagué una certificación SSL y un espejo por el que no tengo y lo guardo sólo para emergencias, por lo que no merece la pena obtener una certificación.

En los escritorios de mi cliente tengo ALGUNOS accesos directos que apuntan a http://production_server y https://production_server (ambos trabajan).Sin embargo, sé que si mi servidor de producción falla, entonces se activa el reenvío de DNS y aquellos clientes que tienen "https" en su acceso directo estarán mirando https://mirror_server (que no funciona) y una gran pantalla roja de inquietud para mi empresa en Internet Explorer 7.

Desafortunadamente, no puedo cambiar esto simplemente a nivel de cliente.Estos usuarios son muy analfabetos informáticos:y es muy probable que se asusten al ver errores de "inseguridad" de HTTPS (especialmente la forma en que Firefox 3 e Internet Explorer 7 lo manejan hoy en día:PUNTO COMPLETO, algo afortunadamente, pero no me ayuda aquí LOL).

Es muy fácil encontrar soluciones apache para redirección http->https, pero por mi vida no puedo hacer lo contrario.

¿Ideas?

¿Fue útil?

Solución

Esto no ha sido probado pero creo que debería funcionar usando mod_rewrite

RewriteEngine On
RewriteCond %{HTTPS} on
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI}

Otros consejos

Tenga en cuenta que el motor de reescritura solo se activa una vez que se ha recibido la solicitud HTTP, lo que significa que aún necesitará un certificado para que el cliente configure la conexión para enviar la solicitud.

Sin embargo, si la máquina de respaldo parece tener el mismo nombre de host (en lo que respecta al cliente), entonces no debería haber ninguna razón para no poder usar el mismo certificado que la máquina de producción principal.

Según la respuesta de ejunker, esta es la solución que me funciona, no en un solo servidor sino en un nube medio ambiente

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{ENV:HTTPS} on
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

Para aquellos que están usando un .conf archivo.

<VirtualHost *:443>
    ServerName domain.com
    RewriteEngine On
    RewriteCond %{HTTPS} on
    RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI}

    SSLEngine on
    SSLCertificateFile /etc/apache2/ssl/domain.crt
    SSLCertificateKeyFile /etc/apache2/ssl/domain.key
    SSLCACertificateFile /etc/apache2/ssl/domain.crt

</VirtualHost>

Si ninguna de las soluciones anteriores funciona para usted (no lo hicieron para mí), esto es lo que funcionó en mi servidor:

RewriteCond %{HTTPS} =on
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [L,R=301]

Todo lo anterior no funcionó cuando usé Cloudflare, este funcionó para mí:

RewriteCond %{HTTP:X-Forwarded-Proto} =https
RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

y este definitivamente funciona sin proxies en la forma:

RewriteCond %{HTTPS} on
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

Es mejor evitar usar mod_rewrite cuando puedas.

En su caso, reemplazaría Rewrite con esto:

    <If "%{HTTPS} == 'on'" >
            Redirect permanent / http://production_server/
    </If>

El <If> La directiva solo está disponible en Apache 2.4+ según este blog aquí.

Ninguna de las respuestas funciona para mí en el sitio web de Wordpress, pero las siguientes funcionan (es similar a otras respuestas pero tiene un pequeño cambio)

RewriteEngine On
RewriteCond %{HTTPS} on
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

esto funciona para mí.

<VirtualHost *:443>
    ServerName www.example.com
    # ... SSL configuration goes here
    Redirect "https://www.example.com/" "http://www.example.com/"
</VirtualHost>

<VirtualHost *:80>
    ServerName www.example.com
    # ... 
</VirtualHost>

asegúrese de escuchar los puertos 80 y 443.

Hasta donde yo sé, una simple actualización meta también funciona sin causar errores:

<meta http-equiv="refresh" content="0;URL='http://www.yourdomain.com/path'">
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top