Rewrite Rule Subdomain ohne Änderung URL
TomH30
- webserver
Hallo!
Ich möchte, dass beim Aufruf von test.domain.foo auf domain.foo/test.php weitergelietet wird. Dieses habe ich so erreicht:
RewriteCond %{HTTP_HOST} ^([^.]+).domain.foo$ [NC]
RewriteCond %1 !^(www|ftp|mail)$ [NC]
RewriteRule ^.*$ http://www.domain.foo/test.php [R,L]
Allerdings ändert sich auch die URL. Gibt es eine Möglichkeit, dass sich die URL nicht ändert, sondern (zumindest bis was weiteres geklickt wird) test.domain.foo in der Browserzeile bleibt (wenn möglich ohne Frame).
Grüße und Danke, Tom
Hallo Tom,
Ich möchte, dass beim Aufruf von test.domain.foo auf domain.foo/test.php weitergelietet wird. Dieses habe ich so erreicht:
Extract the subdomain part of domain.com
RewriteCond %{HTTP_HOST} ^([^.]+).domain.foo$ [NC]
Check that the subdomain part is not www and ftp and mail
RewriteCond %1 !^(www|ftp|mail)$ [NC]
Redirect all requests to a php script passing as argument the subdomain
RewriteRule ^.*$ http://www.domain.foo/test.php [R,L]
Allerdings ändert sich auch die URL. Gibt es eine Möglichkeit, dass sich die URL nicht ändert, sondern (zumindest bis was weiteres geklickt wird) test.domain.foo in der Browserzeile bleibt (wenn möglich ohne Frame).
Wenn ich Deine Konfiguration richtig verstehe, dann wird ja Domains der Form *.domain.foo (um bei Deinem Beispiel zu bleiben) auf den gleichen VHost geleitet und Du versuchst nur durch mod_rewrite die Startseiten umzuschreiben.
In dem Fall würden folgende Regeln funktionieren:
RewriteCond %{HTTP_HOST} ^([^\.]+)\.domain\.foo$ [NC]
RewriteCond %1 !^(www|ftp|mail)$ [NC]
RewriteCond %{REQUEST_URI} !^/test\.php($|/|\?)
RewriteRule ^.*$ /test.php [L,PT]
Das nutzt dann interne Umleitungen (beachte, dass hier das "R" in den Flags von RewriteRule fehlt) auf die /test.php.
Wenn die Domains NICHT alle auf den gleichen VHost zeigen, dann kannst Du u.U. doch noch etwas hinbekommen, wenn mod_proxy installiert ist. Dann kannst Du nämlich den Webserver, auf dem test.domain.foo läuft als Proxy zur test.php einrichten:
RewriteCond %{HTTP_HOST} ^([^\.]+)\.domain\.foo$ [NC]
RewriteCond %1 !^(www|ftp|mail)$ [NC]
RewriteRule ^.*$ http://www.domain.foo/test.php [P,L]
(Beachte hier das "P" in den Flags von RewriteRule)
Viele Grüße,
Christian