Gunther: VirtualHost und mod_rewrite

Hallo Forumsgemeinde!

Folgender Sachverhalt:
Ich habe einen VServer mit mehreren Domains (Verwaltung per Confixx). Im Speziellen geht es aber nur um einen Domainnamen mit zwei TLDs (.de und .com)[www.example.de + www.example.com]. Diese sind jeweils als VirtualHost angelegt.

Jetzt möchte ich zu diesen beiden Domains auch noch jeweils eine Subdomain einrichten [sub.example.de + sub.example.com]. Auch hierfür legt Confixx wieder einen VirtualHost Eintrag an. Das DocumentRoot Verzeichnis soll hierbei bspw. "unterordner1" sein [www.example.de/unterordner1 + www.example.com/unterordner1].

Also nochmal, um Missverständnisse zu vermeiden:
sub.example.de => www.example.de/unterordner1/
sub.example.com => www.example.com/unterordner1/

Soweit so gut. Jetzt kommt Punkt 2 (aus der Threadüberschrift) ins Spiel (und meine Probleme fangen an):
Ich möchte, dass jede Anfrage an "sub.example.de/" + "sub.example.com/" intern auf "www.example.de/unterordner1/index.php", bzw. "www.example.com/unterordner1/index.php" umgeleitet wird. Genauso bei allen Anfragen an "www.example.de/unterordner1/foo" bzw. "www.example.com/unterordner1/foo".
Ausnahmen sollen Dateien mit bestimmten Endungen und die index.php selber bilden.

Ich habe das versucht so zu lösen:

<VirtualHost xxx.xxx.xxx.xxx:80>
  ServerName sub.example.com
  ServerAlias sub.example.de
  DocumentRoot /var/www/web1/html/css
  SuexecUserGroup web1 web1
  ScriptAlias /cgi-bin/ /var/www/web1/html/cgi-bin/

<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteCond %{REQUEST_FILENAME} !.(jpg|jpeg|gif|png|css|js|pl|txt)$ [NC]
  RewriteCond %{REQUEST_FILENAME} !^.*index.php$ [NC]
  RewriteRule ^(.*)$ index.php?page=$1 [L,QSA]
  </IfModule>
</VirtualHost>

Das kommt meinen Wünschen schon ziemlich nahe, aber eben leider nur nahe.

Das Problem:
Bei Anfragen in der Form "www.example.de/unterordner1/foo", bzw. "www.example.com/unterordner1/foo" scheint es wie gewünscht zu funktionieren.
Bei Anfragen in der Form "sub.example.de/foo", bzw. "sub.example.com/foo" kommt allerdings ein 400 Bad Request Fehler bei raus.

Was mache ich falsch, bzw. wo liegt der Fehler?
Bitte berücksichtige bei deiner möglichen Antwort, dass ich nicht wirklich Ahnung von der Materie habe, obwohl ich mich schon öfter durch die entsprechenden Apache Manual Kapitel und sonstige Tutorials, Foren, Self-Archiv, etc. durchgewühlt und gelesen habe.

Für Hilfe meinen verbindlichsten Dank im Voraus!

Gruß Gunther

  1. hi,

    Bei Anfragen in der Form "sub.example.de/foo", bzw. "sub.example.com/foo" kommt allerdings ein 400 Bad Request Fehler bei raus.

    Dein Apache dürfte dir als Admin noch mehr mitzuteilen haben, als er dir als gemeinen Besucher zu sagen wagt.

    Will sagen, schau mal ins Error-, Access- und Rewrite-Log (Zugriff auf die httpd.conf, um letzteres zu aktivieren, ist ja gegeben).

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Hi,

      Bei Anfragen in der Form "sub.example.de/foo", bzw. "sub.example.com/foo" kommt allerdings ein 400 Bad Request Fehler bei raus.

      Dein Apache dürfte dir als Admin noch mehr mitzuteilen haben, als er dir als gemeinen Besucher zu sagen wagt.

      Will sagen, schau mal ins Error-, Access- und Rewrite-Log (Zugriff auf die httpd.conf, um letzteres zu aktivieren, ist ja gegeben).

      danke für den Tipp. Dieses Problem ist nun gelöst. Ursache war ein "RewriteBase  /sub/".

      Ausserdem habe ich das Ganze jetzt in eine .htaccess ausgelagert.

      Gruß Gunther

      1. hi,

        Ausserdem habe ich das Ganze jetzt in eine .htaccess ausgelagert.

        Berücksichtige bitte, dass es idR. durchweg performanter ist, Rewriting innerhalb des VirtualHosts bzw. der httpd.conf zu machen, wenn man schon Zugriff auf diese hat - weil dadurch Subrequests entfallen, die nötig werden, wenn der Server erst mal die Anfrage soweit aufdröseln muss, dass er die zuständige .htaccess-Datei vorfindet.

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }