siteground rewriterule redireccionar only htaccess force http .htaccess mod-rewrite https

rewriterule - htaccess: fuerza http en todas las páginas y https en directorios seleccionados



rewriterule.*)$ https (2)

Lo hago en la configuración de vhost ( LocationMatch no está disponible en htaccess, pero de esa manera puedes asegurarte de que nunca lo elimines accidentalmente):
(Nota: reemplace __SERVER__ con su servidor, no es automático).

<VirtualHost *:80> ... <LocationMatch "(.*(p|P)hpMyAdmin.*)"> RedirectPermanent / https://__SERVER__/ </LocationMatch> </VirtualHost> <VirtualHost *:443> ... <LocationMatch "!(.*(p|P)hpMyAdmin.*)"> RedirectPermanent / http://__SERVER__/ </LocationMatch> </VirtualHost>

Nunca he probado el segundo escenario (redirigir a no seguro) pero debería funcionar (¡no estoy seguro de la ubicación ! ).
Todavía no he encontrado una buena manera de no especificarlos dos veces, pero es bastante fácil copiar la expresión regular de una sola línea para el LocationMatch

Tengo lo siguiente:

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

Si el directorio se llama "protegido", asegúrese de que el usuario esté utilizando https. Si el directorio es algo excepto "protegido", asegúrese de que el usuario esté usando http.

Esto funciona muy bien, pero ¿cómo especifico directorios adicionales?

Además, ¿hay alguna manera de lograr esto sin tener que especificar directorios dos veces? ¿Una vez para incluirlo y una vez para excluirlo?

¡Gracias!

ACTUALIZAR

Aunque mi carpeta "protegida" se vio obligada a utilizar https debido a mis reglas, las referencias a imágenes, hojas de estilo y javascripts que no estaban en la carpeta "protegida" todavía se redireccionaban a http. Esto hace que la página "protegida" solo sea parcialmente segura. Agregar lo siguiente antes del código de redirección resuelve esto:

RewriteRule /.(css|gif|jpe?g|js|png|swf)$ - [L]


RewriteCond %{HTTPS} off RewriteCond %{REQUEST_URI} protected [NC,OR] RewriteCond %{REQUEST_URI} protected2 [NC,OR] RewriteCond %{REQUEST_URI} protected3 [NC] RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [L,R=301] RewriteCond %{HTTPS} on RewriteCond %{REQUEST_URI} !protected [NC] RewriteCond %{REQUEST_URI} !protected2 [NC] RewriteCond %{REQUEST_URI} !protected3 [NC] RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [L,R=301]

¡puedes usar OR para agregar más opciones!


Aquí hay más detalles sobre las condiciones de mod_rewrite: http://httpd.apache.org/docs/current/mod/mod_rewrite.html#RewriteCond