TomH30: Rewrite Rule Subdomain ohne Änderung URL

Hallo!

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).

Grüße und Danke, Tom

  1. 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