Apache Reindirizza solo quando si immette una password
-
02-07-2019 - |
Domanda
Ho installato phpMyID su una delle mie macchine e sto cercando di ottenere apache per reindirizzare su HTTPS solo quando viene inviata una password. Lo sto facendo poiché la mia configurazione originale di reindirizzamento di tutto il traffico openid non ha funzionato con StackOverflow non mi piace il mio certificato autofirmato. Questa è la nuova regola che ho scritto, ma non funziona:
RewriteRule http://%{SERVER_NAME}/openid/index.php(\?.+)$ https://%{SERVER_NAME}/openid/index.php$1
Soluzione
Devi usare un Cond per testare sia la porta (http o httpd) sia la stringa di query:
RewriteCond %{SERVER_PORT} 80
RewriteCond %{QUERY_STRING} (.+)
RewriteRule /openid/index.php https://%{SERVER_NAME}/openid/index.php?%1
se su .htaccess devi usare invece
RewriteCond %{SERVER_PORT} 80
RewriteCond %{QUERY_STRING} (.+)
RewriteRule openid/index.php https://%{SERVER_NAME}/openid/index.php?%1
Altri suggerimenti
Una soluzione migliore sarebbe:
RewriteCond %{SERVER_PORT} !^443$ RewriteRule ^openid/index\.php$ https://%{SERVER_NAME}/openid/index.php
Spiegazione: RewriteCond% {SERVER_PORT} 80
corrisponde anche alle porte che includono solo 80
. Lo stesso vale per il pattern openid / index.php
(dove & # 8220; .
& # 8221; può anche essere qualsiasi carattere). E aggiungere la query non è necessario poiché mod_rewrite aggiunge automaticamente la query originariamente richiesta al sostituto a meno che non venga fornita la query del sostituto.