RewriteRules für ViurtualHosts

E

elmi

Jungspund
Hallo ihrs,

da ihr mir beim letzten Problem so gut weitergeholfen habt, hoffe ich, ihr könnt mir bei folgendem Problem auch einen Tipp geben:
Auf meinem Webserver lasse ich alle http-Anfragen, welche auf www.meinedomain.de eingehen, auf https weiterleiten.
Dafür habe ich einen VirtualHost-Eintrag in der Apache-Conf erstellt:
Code:
<VirtualHost www.meinedomain.de[B]:80[/B]>
        RewriteEngine On
        RewriteCond %{SERVER_PORT} !^443$
        RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L]
</VirtualHost>

Die Weiterleitung klappt soweit auch.
Nun habe ich heute die Groupware-Software "Tine 2.0" testweise installiert. Ich wollte auch die Synchronisierung mit meinem Smartphone testen und habe versucht ActiveSync zum Laufen zu bekommen.

Dazu müsste ich laut Dokumentation folgende Einträge einem VirtualHost hinzufügen:
Code:
  RewriteEngine on
  RewriteRule /Microsoft-Server-ActiveSync(.*) /path/to/your/tine20_installation/index.php$1 [E=REDIRECT_ACTIVESYNC:true,E=REMOTE_USER:%{HTTP:Authorization}]

Da ich natrülich nicht will, dass übertragenen Daten unverschlüsselt durchs Netz wandern, habe ich einen 2. VirtualHost-Eintrag folgendermaßen gesetzt:
Code:
<VirtualHost www.meinedomain.de[B]:443[/B]>
        RewriteEngine On
        RewriteRule /Microsoft-Server-ActiveSync(.*) /path/to/my/tine20_installation/index.php$1 [E=REDIRECT_ACTIVESYNC:true,E=REMOTE_USER:%{HTTP:Authorization}]
</VirtualHost>[/CODE]

Nun funktioniert zwar ActiveSync, aber die Weiterleitung von HTTP zu HTTPS nicht mehr.
Ich habe nun schon die halben Tag gegooglet, verschiedene Sachen ausprobiert, mich durch die Apache-Dokus versucht durchzufitzen, aber ich kriegs nicht hin.
 
Ich denke ein VirtualHost der beide RewriteRules beeinhaltet sollte reichen und ist "sauberer":

Code:
<VirtualHost www.meinedomain.de:80 www.meinedomain.de:443>

Wobei du den Port dann natürlich auch weg lassen können solltest, dann sieht das ingesamt wahrscheinlich so aus:

Code:
<VirtualHost www.meinedomain.de>
    RewriteEngine on
    RewriteRule /Microsoft-Server-ActiveSync(.*) /path/to/your/tine20_installation/index.php$1 [E=REDIRECT_ACTIVESYNC:true,E=REMOTE_USER:%{HTTP:Authorization}]
    
    RewriteCond %{SERVER_PORT} !^443$
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L]
</VirtualHost>
 
Ich wusste gar nicht, dass man 2 Domains in einen VirtualHost schreiben kann^^

Naja, die Port-Angaben muss ich ja machen, weil ich ja bei Port 443 das SSL Zertifikat hinterlegt hab, oder geht das auch anders?
Ich habe also VirtualHost für die SSL-Geschichte angelegt:
<VirtualHost 123.123.123.123:443>
hier die SSL-Einstellungen
</VirtualHost>

Und eine Mischung aus VirtualHosts ohne Portangabe und mit Protangabe ist ja nicht möglich, so wie ich das sehe.

Wenn ich also die Domains wie in Variante 1 angebe und darunter die RewriteRules definiere, schmeißt mir Firefox die Meldung
(Fehlercode: ssl_error_rx_record_too_long)
 
Vielleicht sollte ich generell erstmal erklären wie meine Struktur der Verzeichnisse / Subdomains aussieht:
Ziel ist 1. alle Anfragen auf HTTP nach HTTPS umzuleiten.
Da mein SSL-Zertifikat, welches ich von einer Trusted CA ausstellen lassen habe, nur für meine Domain "www.meinedomain.de" und "meinedomain.de" gilt, muss ich sicherstellen, dass alle Subdomains "http://beispiel1.meinedomain.de" und "https://beispiel1.meinedomain.de" nach "https://www.meinedomain.de/beispiel1" umgeleitet werden.
Dazu habe ich bisher einen je VirtualHost "beispiel1.meinedomain.de" erstellt und einen "Redirect / https://www.meinedomain.de/beispiel1" gesetzt.
Dann gab es aber noch subdomains, deren Redirect noch direkt auf eine php-Datei weitergeleitet wurde.

So wie ich das sehe könnte man das allerdings wahrscheinlich alles über Rewrite Conditions und Rules in einem "globalen" <VirtualHost meinedomain.de> umsetzen, oder?
 
Ich habs nun gelöst gekriegt. Das Problem war, das ich einmal einen VirtualHost für die IP meines Servers und einmal einen Host auf www.meinedomain.de erstellt hatte, was ja doppel-gemoppelt war. Dadurch kamen sicher die RewriteRules und Conds durcheinander. Jedenfalls habe ich nun die namensbasierenden VirtualHosts rausgehauen und die Rules in die IP-basierten Hosts mit aufgenommen und siehe da: es funktioniert :)

Und wieder was gelernt ;)
 

Ähnliche Themen

Nginx als Reverse Proxy für Nextcloud und Emby

htaccess, Weiterleitung mit www und ohne www

Aura for PHP Konfigurationsproblem

mod_rewrite und aktuelle url

Squid als RPCoHTTPS Proxy für Outlook Anywhere

Zurück
Oben