Ich verwende Drupal 7. Die Anmeldeseite für meine Benutzer befindet sich unter / user / login, also der Standard-Anmeldepfad. Ich brauche diese Seite, um mit SSL verschlüsselt zu werden, damit die Leute ihre Passwörter nicht im Klartext übertragen.
Ich habe Apache so konfiguriert, dass die Site entweder über HTTP oder HTTPS navigiert werden kann. Ich möchte jedoch einige Umschreiberegeln implementieren, damit alle Anforderungen außer / user / login über HTTP gestellt werden, da dies UNENDLICH schneller ist und zu einer besseren Benutzererfahrung führt. Ich lehne es ab, Secure Pages zu diesem Zeitpunkt zu verwenden, da die Unterstützung in Drupal Core fehlerhaft ist, und ich werde Core nicht manuell patchen. Das heißt, ich muss nur noch Apache-Umschreiberegeln verwenden.
Ich habe folgende Regeln:
<VirtualHost *:80>
...
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} ^/user/login$
RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [L,R]
...
</VirtualHost>
<VirtualHost *:443>
...
RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} !^/user/login$
RewriteRule ^/(.*) http://%{HTTP_HOST}/$1 [L,R]
...
</VirtualHost>
Für mich macht das Sinn, aber Drupal scheint es nicht zu mögen.
Was passiert ist wie folgt:
- Wenn ich mit HTTP zu einer anderen Seite als / user / login auf der Site navigiere, funktioniert dies einwandfrei.
- Wenn ich über HTTP zu / user / login navigiere, werde ich zur Startseite weitergeleitet.
- Wenn ich über HTTPS zu einer Seite navigiere, werde ich über HTTP zur Startseite weitergeleitet.