[Apache] .htaccess - SSL Weiterleitung

bber

Newbie
Registriert
Juli 2012
Beiträge
6
[mod_rewrite] .htaccess - SSL Weiterleitung / IS_SUBREQ

Hallo,

Ich möchte eine Webseite per RewriteCond/RewriteRule (.htaccess) je nach Unterseite auf SSL umleiten. Im Grunde gibt es Ordner und einige Unterdateien, welche via HTTPS laufen sollen. Alle anderen sollen auf jeden Fall wieder auf HTTP umgeleitet werden.

Das Poblem ist, das von Seiten, welche via HTTPS laufen sollen, auch unterseiten aufgerufen werden (CSS/JS), welche nach der Regel normalerweise nur auf HTTP laufen sollen.

Beispiel:

www.seite.de/wichtig/ ... (alle Dateien in /wichtig)
-> z.B. index.php -->HTTPS
-> seite.de/skript.js -->HTTPS
(geladen aus index.php)

www.seite.de/ ... (alle anderen Ordner als /wichtig, damit auch der Root)
-> z.B. index.php -->HTTP
-> skript.js -->HTTP
(geladen aus index.php)

HTACCESS:
# Regel 1
Code:
RewriteCond %{REQUEST_URI} ^(/wichtig/) [NC]
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)$ https://www.seite.de/$1 [R=301,L]

# Regel 2
Code:
RewriteCond %{SERVER_PORT} ^443$
RewriteCond %{REQUEST_URI} !^(/wichtig/) [NC]
RewriteRule ^(.*)$ http://www.seite.de/$1 [R=301,L]

Das Problem ist, nun dass in meiner Umsetzung www.seite.de/skript.js immer via HTTP geladen wird, selbst wenn es selbst von www.seite.de/wichtig/skript.js aus nachgeladen wird.

Daher müsste ich der 2. Regel irgendwie beibringen, dass diese nur reagieren soll, wenn die URI nicth selbst von einer anderen aufgerufen wird.

Für mein Verständnis sollte das mit IS_SUBREQ abgefragt werden könne, es funktioniert aber nicht

# Regel 2b
Code:
RewriteCond %{SERVER_PORT} ^443$
RewriteCond %{IS_SUBREQ} false      
RewriteCond %{REQUEST_URI} !^(/wichtig/) [NC]
RewriteRule ^(.*)$ http://www.seite.de/$1 [R=301,L]

Im Grunde merke ich keine Änderung. Die SSL-verschlüsselten Seiten erhalten leider immer das unverschlüsselt übertragene Unterskript.

Mach ich einen Fehler oder geht mein Vorgehen gar nicht so wie gedacht?

Vielen Dank!
 
Zuletzt bearbeitet:
Regel 1
Code:
RewriteRule ^/wichtig/(.*) https://%{SERVER_NAME}/wichtig/$1 [R=301,QSA,L]

Regel 2
Code:
RewriteRule !^/wichtig/(.*) http://%{SERVER_NAME}/$1 [R=301,QSA,L]

Das sollte eigentlich bereits ausreichen und auch um einiges performanter sein. Ich habe es jetzt nicht getestet da ich nur noch nginx verwende. Sag mir bitte ob’s was geholfen hat.

LG
 
Zuletzt bearbeitet:
Zurück
Oben