Problem: ich verstehe nicht viel von .htaccess
Der Ordner /httpdocs enthält zwei Unterordner: /www und /login
Die Domains www.domain.de, bzw. domain.de und login.domain.de verweisen beide auf /httpdocs. Es soll jeweils auf den entsprechenden Unterordner weitergeleitet werden.
Bisher benutzte ich ein mod_rewrite
- Code: Select all
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
Ich habe schon von den Variablen in .htaccess gelesen, aber irgendwie steig ich da nicht durch, diese Syntax ist mir ein Rätsel... Und Debugging geht ja auch nicht, entweder funktioniert es, oder man bekommt einen Server Error.
Verständnisfragen:
- Code: Select all
#das erstellt die Variable "sub" und speichert z.b. von %{HTTP_HOST} (=login.domain.de) "login" ?
SetEnvIfNoCase %{HTTP_HOST} (^[^.]+) sub
# so könnte die Variable verwendet werden?
RewriteCond %{ENV:sub}/%{REQUEST_FILENAME} !-f
RewriteRule . %{ENV:sub}/index.php [L]
Das habe ich probiert aber, es gibt eine 403 Forbidden Meldung.
Könnte ich PHP in der .htaccess verwenden, würde meine Lösung so aussehen:
- Code: Select all
preg_match('(^[^.]+)' ,'%{HTTP_HOST}', $subdomain); # matched: [sub].domain.de
$dir = ($subdomain[0] == 'login') ? 'login' : 'www'; # gibt es sowas wie if/else in .htaccess?
RewriteCond %{ENV:$dir}/%{REQUEST_FILENAME} !-f # ist keine Datei
RewriteCond %{ENV:$dir}/%{REQUEST_FILENAME} !-d # ist kein Verzeichnis
RewriteRule . /%{ENV:$dir}/index.php
- Code: Select all
RewriteBase /%{ENV:$dir}
RewriteCond %{REQUEST_FILENAME} !-f # ist keine Datei
RewriteCond %{REQUEST_FILENAME} !-d # ist kein Verzeichnis
RewriteRule . /index.php
P.S. wenn die .htaccess ein "www." (aber nur, wenn keine Subdomain aufgerufen wird!) erzwingen [R301] würde, wäre das auch nicht schlecht...
Vielen Dank