redireccionar htaccess force .htaccess ssl https

.htaccess - htaccess - Redirigir HTTP a HTTPS para una página



redirect http to https iis 8 (1)

Sé que se ha pedido la muerte de este problema, pero por alguna razón, de los 20 mensajes que he leído, nada funciona bien para mí y espero que alguien pueda arrojar alguna información.

Básicamente, tengo un carrito de compras simple, donde quiero redireccionar 2 uri a HTTPS, mi página de pago y mi carpeta de administración:

/checkout /admin

Puedo redireccionar con éxito a la versión de HTTPS para pagar con el siguiente código:

RewriteEngine On #https RewriteCond %{SERVER_PORT} !^443$ RewriteRule ^checkout https://palatinehillsestatewinery.com/checkout [R=301,L] # remove index.php, this is just included to show everything in my .htaccess RewriteCond $1 !/.(gif|jpe?g|png)$ [NC] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /index.php/$1 [L]

El problema que he encontrado con esta y todas las demás soluciones es que una vez que decido volver a una página que no debe ser HTTPS, la url se queda en HTTPS.

He estado buscando a tientas bucles, etc.

Si alguien puede ayudar a redireccionar a HTTPS en solo estas 2 páginas, y luego a http en todas las demás páginas, eso sería de gran ayuda y muy apreciado.


Esto no responde su pregunta directamente, pero creo que la puse como respuesta (además, es demasiado grande para publicarla como comentario).

Mi consejo: por favor, dejen de jugar con htaccess para este tipo de tarea ( fuercen pocas URL para usar HTTPS y fuercen a los demás a usar HTTP).

La mejor manera es generar URL COMPLETAS para todos los enlaces (páginas, no recursos), donde la URL incluye el nombre de dominio y el protocolo . En este caso, todas las URL tendrán el protocolo adecuado (HTTP / HTTPS) de inmediato. Por supuesto: aún puede corregir (301 o 302 redirigir) solicitudes a supuestas-a-https si (por alguna extraña razón) se solicitan a través de HTTP. Ahí es donde .htaccess se puede usar de forma segura y fácil.

Si el usuario solicita una página normal (se debe enviar por HTTP) a través de HTTPS, entonces déjalo hacerlo, no hay nada de malo en eso. Sí, HTTPS requiere un poco más de recursos del lado del servidor, pero si genera todos los enlaces de esa forma, prácticamente no habrá tales situaciones, a menos que el usuario cambie el protocolo específicamente . Incluso si dicha página se publicará a través de HTTPS, el siguiente enlace "normal" en el que haga clic será HTTP: una vista de página adicional basada en HTTPS no matará a su servidor.

Estoy usando este enfoque todo el tiempo cuando el sitio tiene un área segura ... y en base a los registros, tenemos menos del 0.01% de TODAS las vistas de página que se vieron / intentaron ser vistas a través del protocolo "incorrecto" - gran mayoría de ellos fueron bots o intentos de hackear / búsqueda de vulnerabilidades.

Basándome en tales estadísticas, diría que está funcionando perfectamente. sí, necesitas modificar tu código / plantillas un poco para implementar esto ... pero es mucho mejor que jugar con .htaccess y mod_rewrite.

En cualquier caso, aquí están las reglas que harían el trabajo por usted:

# force https for all URLs in /checkout RewriteCond %{HTTPS} =off RewriteRule ^checkout https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] # don''t do anything for images/css/js RewriteRule /.(gif|jpe?g|png|css|js)$ - [NC,L] # force http for all other URLs that are not in /checkout RewriteCond %{HTTPS} =on RewriteCond %{REQUEST_URI} !^/(checkout|index.php/checkout) RewriteRule .* http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] # your other rules here, e.g.: RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /index.php/$1 [L]

O

# force https for all URLs in /checkout RewriteCond %{HTTPS} =off RewriteRule ^checkout https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] # do not do anything for already existing files RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule .+ - [L] # force http for all other URLs that are not in /checkout RewriteCond %{HTTPS} =on RewriteCond %{REQUEST_URI} !^/checkout RewriteRule .* http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] # your other rules here, e.g.: RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /index.php/$1 [L]