PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : modrewrite Lösungsansatz



bigblue2010
04.05.12, 10:31
Hallo Zusammen,

auf einem meiner vhosts habe ich folgede Rewrite-Regel eingetragen, damit alle Zugriffe auf den Port 443 Umgeleitet werden:


RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]


Jetzt gibt es aber ein paar Seiten die nicht über 443 laufen sollten sondern unter Port 80. Wie greife ich diese Seiten auf und leite sie an Port 80 weiter?

Beispiel:

www.example.com --> 443
www.example.com/keine/verschluesselung/ --> 80


EDIT:
Ich hab es nun wie folgt vesucht, aber leider klappt das nicht: Die aufgerufene Website leitet die Anfrage so um, dass sie nie beendet werden kann:


RewriteCond %{REQUEST_URI} keine/verschluesselung
RewriteRule ^.*$ http://%{SERVER_NAME}%{REQUEST_URI} [L,R]



Danke im Voraus für Eure hilfe.

Marcus

nopes
04.05.12, 21:14
Ich verstehe nicht warum das R-Flag ([R]) auch bei nicht verschlüsselten Seiten verwendet wird.

Naja ich denke sogar das ist dein Problem, schließlich leitest du den auf sich selber um - was ansich schon ein bisschen crank ist :)
Vermutlich wirkt das wie ein neuer Request, der dann wieder umgeleitet wird und wieder und wieder und wieder und das Icon dreht und dreht und dreht und dreht und der Indianer2 kotzt ;)

Also [R] für Port 80 weg (ersetzen würde ich mit $&, das rewrite VOR das für Port 443 und alles dürfte gut sein:
RewriteCond %{REQUEST_URI} keine/verschluesselung
RewriteRule ^.*$ $& [L]

RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]

Natürlich kannst du auch die Kondition für die Umleitung auf 443 korrigieren (die ich ehrlich gesagt ziemlich gewagt finde) und das Problem so lösen, dass gewollte 80er gar nicht erst befummelt werden (wäre sauberer!) - s.a. http://httpd.apache.org/docs/current/rewrite/