Forza SSL / HTTPS con mod_rewrite

Ho un’applicazione Zend Framework che voglio forzare in HTTPS usando mod_rewrite. Sono piuttosto perso quando si tratta di mod_rewrite. Ecco il mio attuale file .htaccess nella radice della mia applicazione.

RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-s RewriteCond %{REQUEST_FILENAME} !-l RewriteRule !\.(html|htm|php|js|ico|gif|jpg|png|css|csv)$ /subdir/index.php 

Qual è il modo migliore per forzare l’applicazione in HTTPS in base a ciò che ho? Ho provato un paio degli esempi che ho trovato qui, ma continuo a ricevere loop di reindirizzamento o errori interni del server quando li provo.

Grazie per l’aiuto!

Metti questa regola prima delle tue regole attuali:

 RewriteCond %{HTTPS} !=on RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 

Ho trovato una soluzione che funziona bene per entrambi i server proxy e non proxy.

Se stai utilizzando CloudFlare, Bilanciamento del carico Elastic AWS, Heroku, OpenShift o qualsiasi altra soluzione Cloud / PaaS e stai sperimentando loop di reindirizzamento con normali reindirizzamenti HTTPS, prova a utilizzare il seguente snippet.

 RewriteEngine On # If we receive a forwarded http request from a proxy... RewriteCond %{HTTP:X-Forwarded-Proto} =http [OR] # ...or just a plain old http request directly from the client RewriteCond %{HTTP:X-Forwarded-Proto} ="" RewriteCond %{HTTPS} !=on # Redirect to https version RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] # Put the rest of your rewrite rules here 

Stavo cercando anche questa soluzione. Ho aggiunto le soluzioni Gumbo e ha funzionato benissimo per me. Ma il mio originale era diverso. La mia riscrittura sito / app reindirizza tutto tramite index.php (per fany urls e ../application) ad eccezione dei file richiesti in modo specifico. (come un’immagine o altri file statici nella radice pubblica) Ecco il mio originale, che ho trovato fuori dal sito ZF molto tempo fa.

 RewriteEngine On RewriteCond %{REQUEST_FILENAME} -s [OR] RewriteCond %{REQUEST_FILENAME} -l [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^.*$ - [NC,L] RewriteRule ^.*$ index.php [NC,L] 

Ecco le regole aggiuntive di Gumbo per forzare SSL sull’intero sito. Finora funziona bene per me.

 RewriteEngine On RewriteCond %{HTTPS} !=on RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] RewriteCond %{REQUEST_FILENAME} -s [OR] RewriteCond %{REQUEST_FILENAME} -l [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^.*$ - [NC,L] RewriteRule ^.*$ index.php [NC,L] 
 RewriteEngine On RewriteCond %{SERVER_PORT} 80 RewriteRule ^.*$ https://mydomain.com/\0 [L,QSA,R=301]