Https a http redirigir utilizando htaccess

Estoy intentando redirigir https://www.example.com a http://www.example.com . Probé el siguiente código en el archivo .htaccess

RewriteEngine On RewriteCond %{HTTP_HOST} ^example\.com$ [NC] RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L] 

Este código redirecciona con éxito https://example.com a http://www.example.com . Sin embargo, cuando escribo https://www.example.com , aparece un error de “página web no disponible” en el navegador.

También probé los siguientes 2 códigos sin éxito

Intento 1

 RewriteEngine On RewriteCond %{HTTPS} !=on RewriteRule ^/(.*):NOSSL$ http://www.example.com/$1 [R=301,L] 

Intento 2

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

Ambos bashs anteriores fallaron. ¿Alguna sugerencia?

El bash 2 fue casi perfecto. Solo modifícalo ligeramente:

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

Sin embargo, si su sitio web no tiene un certificado de seguridad, se encuentra en un entorno de alojamiento compartido y no desea recibir la “advertencia” cuando se solicita su sitio web a través de https, no puede redirigirlo usando htaccess. El motivo es que el mensaje de advertencia se activa antes de que la solicitud llegue al archivo htaccess, por lo que debe arreglarlo en el servidor. Vaya a /etc/httpd/conf.d/ssl.conf y comente la parte sobre el servidor virtual 443. Pero las probabilidades son que su proveedor de hosting no le dará tanto control. Por lo tanto, tendría que pasar a un host diferente o comprar el SSL para que la advertencia no se active antes de que su htaccess tenga la posibilidad de redirigir.

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

Puede usar la siguiente regla para redirigir desde https a http :

  RewriteEngine On RewriteCond %{HTTPS} ^on$ RewriteRule ^(.*)$ http://example.com/$1 [NC,L,R] 

Explicación

 RewriteCond %{HTTPS} ^on$ 

Comprueba si HTTPS está activado (la solicitud se realiza mediante https)

Entonces

 RewriteRule ^(.*)$ http://example.com/$1 [NC,L,R] 

Redirija cualquier solicitud ( https://example.com/foo ) a http://example.com/foo .

  • $ 1 es parte de la expresión regular en el patrón RewriteRule, contiene el valor que fue capturado en (. +) , En este caso, captura todo el request_uri todo después del nombre de dominio.

  • [NC, L, R] son ​​las banderas, NC hace que el caso de uri sea sensato, puede usar letras mayúsculas o minúsculas en la solicitud.

La bandera L le dice al servidor que deje de procesar otras reglas si la regla de currunt coincide, es importante usar la bandera L para evitar conflictos de reglas cuando tiene más que reglas en un bloque.

El indicador R se usa para hacer una redirección externa.

La diferencia entre http y https es que las solicitudes https se envían a través de una conexión ssl-encrypted. La conexión ssl-encrypted debe establecerse entre el navegador y el servidor antes de que el navegador envíe la solicitud http.

Las solicitudes Https son de hecho solicitudes http que se envían a través de una conexión encriptada ssl. Si el servidor rechaza establecer una conexión cifrada ssl, el navegador no tendrá conexión para enviar la solicitud. El navegador y el servidor no tendrán forma de comunicarse entre ellos. El navegador no podrá enviar la URL a la que quiere acceder y el servidor no podrá responder con un redireccionamiento a otra url.

Entonces esto no es posible. Si desea responder a los enlaces https, necesita un certificado SSL.

 RewriteCond %{HTTP:X-Forwarded-Proto} =https 

Tu código es correcto Simplemente colóquelos dentro de

Ejemplo:

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