Apache Redirect uniquement lors de la saisie d'un mot de passe
-
02-07-2019 - |
Question
J'ai configuré phpMyID sur l’une de mes machines et j’essaie de faire rediriger Apache à HTTPS uniquement lorsqu’un mot de passe est soumis. Je le fais car ma configuration d'origine consistant à rediriger tout le trafic openid n'a pas fonctionné. Stackoverflow n'aime pas mon certificat auto-signé. C’est la nouvelle règle que j’ai écrite, mais elle ne fonctionne pas:
RewriteRule http://%{SERVER_NAME}/openid/index.php(\?.+)$ https://%{SERVER_NAME}/openid/index.php$1
La solution
Vous devez utiliser une Cond pour tester le port (http ou httpd) et la chaîne de requête:
RewriteCond %{SERVER_PORT} 80
RewriteCond %{QUERY_STRING} (.+)
RewriteRule /openid/index.php https://%{SERVER_NAME}/openid/index.php?%1
si sur .htaccess vous devez utiliser à la place
RewriteCond %{SERVER_PORT} 80
RewriteCond %{QUERY_STRING} (.+)
RewriteRule openid/index.php https://%{SERVER_NAME}/openid/index.php?%1
Autres conseils
Une meilleure solution serait:
RewriteCond %{SERVER_PORT} !^443$ RewriteRule ^openid/index\.php$ https://%{SERVER_NAME}/openid/index.php
Explication: RewriteCond% {SERVER_PORT} 80
correspond également aux ports qui incluent uniquement 80
. Il en va de même pour le modèle openid / index.php
(où «.
» peut également être un caractère quelconque). Et l’ajout de la requête n’est pas nécessaire, car mod_rewrite ajoute automatiquement la requête initialement demandée au substitut, à moins que la requête du substitut ne soit fournie.