Frage

I Setup phpMyID auf einer meiner Maschinen, und ich versuche, Apache zu bekommen, um HTTPS zu umleiten nur, wenn ein Passwort eingegeben wird. Ich tue dies als meine ursprüngliche Setup alle openid Verkehr Umleitung nicht Stackoverflow hat nicht funktioniert mein Selbst Zertifikat signiert mögen. Dies ist die neue Regel, die ich geschrieben habe, aber seine nicht funktioniert:

RewriteRule http://%{SERVER_NAME}/openid/index.php(\?.+)$ https://%{SERVER_NAME}/openid/index.php$1
War es hilfreich?

Lösung

Sie benötigen einen Cond verwenden sowohl für Port (http oder httpd) und Query-String zu testen:

RewriteCond %{SERVER_PORT} 80
RewriteCond %{QUERY_STRING} (.+)
RewriteRule /openid/index.php https://%{SERVER_NAME}/openid/index.php?%1

, wenn auf .htaccess müssen Sie stattdessen

RewriteCond %{SERVER_PORT} 80
RewriteCond %{QUERY_STRING} (.+)
RewriteRule openid/index.php https://%{SERVER_NAME}/openid/index.php?%1

Andere Tipps

Eine bessere Lösung wäre:

    RewriteCond %{SERVER_PORT} !^443$
    RewriteRule ^openid/index\.php$ https://%{SERVER_NAME}/openid/index.php

Explaination: RewriteCond %{SERVER_PORT} 80 hat auch Ports entsprechen, die nur 80 umfassen. Das gleiche gilt für das Muster openid/index.php (wobei „.“ auch ein beliebiges Zeichen sein kann). Und die Abfrage angehängt ist nicht notwendig, da mod_rewrite automatisch die ursprünglich angeforderte Abfrage auf den Ersatz anfügt, wenn die Abfrage des Ersatzes gegeben wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top