Apache2 Debian Wildcard VirtualHosts mit username

Fatal Error

Lt. Junior Grade
Registriert
Jan. 2009
Beiträge
294
Hi Leute,

ich bräuchte da mal eure Hilfe. Ich probier das jetzt schon seit Wochen und komme einfach nicht weiter. Ich würde auf meinem Webserver gerne Subdomains in der Art username.users.domain.tld dynamisch erstellen lassen. Klar könnte ich alle händisch in VirtualHosts eintragen, aber sinnvoll wär das nicht. Einen Wildcard Domaineintrag im Zonefile ala *.users.domain.tld hab ich schon erstellt. Es geht jetzt nur noch darum, wie ich es schaffen kann, dass username.users.domain.tld auf /home/username/html weitergeleitet wird?
Brauche ich dazu den mod_rewrite oder geht das auch mit mod_vhost_alias?

Ich hätte es zum Beispiel so versucht:
Code:
<VirtualHost *:80>
ServerName *.users.domain.tld
UseCanonicalName Off

VirtualDocumentRoot /home/%0/html

...
</VirtualHost>
Nicht nur mit %0 sondern allen "Variablen"

oder mit mod_rewrite:
Code:
<VirtualHost *:80>
ServerName *.users.domain.tld

RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?([a-zA-Z0-9]+)\.users\.domain\.tld$
RewriteRule ^(.*)$ /home/%2$1/html/ [L]

...
</VirtualHost>
Hier hab ich auch alle möglichen %-Werte und Gruppen getestet.

Ich bedanke mich gleich mal für Antworten! Ich weiß echt nicht mehr weiter O.o
 
threadi schrieb:
Ich hab sowas früher mal über mod_rewrite gemacht.

Weißt du vielleicht auch noch wie du das gemacht hast? Oder könntest du nachschauen?
Wie gesagt ich habs auch schon mit mod_rewrite probiert, aber ich komm einfach nicht drauf was ich falsch mache.
Ergänzung ()

So, habe gerade noch einen Versuch unternommen und bin gescheitert. Diesmal dachte ich ich benutze den mod_userdir um zumindest mal urls der Form domain.tld/~username hinzubekommen. Dann wollte ich mittels mod_rewrite die username.users.domain.tld auf domain.tld/~username rewriten. Entweder ich mache wieder etwas falsch oder es geht so garnicht:

Code:
RewriteEngine On
RewriteRule ^(www\.)?([a-zA-Z0-9]+)\.users\.domain\.tld$  domain.tld/~$2 [L]
#RewriteRule ^%{SERVER_PROTOCOL}://(www\.)?([a-zA-Z0-9]+)\.users\.domain\.tld$ ^%{SERVER_PROTOCOL}://domain.tld/~$2 [L]

:(
 
Was willst Du denn genau erreichen?

Die Hauptseite wäre z.B. www.example.org.
Dann soll es noch Subdomains geben die .. was sind? Eigene Webseiten? Unterseiten? Landingpages? Z.B. forum.example.org? Und wohin sollten diese verweisen und wie in Zusammenhang mit der Hauptseite stehen?
 
Naja ich habs ja oben geschrieben. Wenn username.users.domain.tld eingegeben wird, soll der documentRoot auf /home/username/html gesetzt werden. D.h. zum Beispiel username.users.domain.tld/ordner wäre dann /home/username/html/ordner. Hoffe ich hab mich verständlich ausgedrückt. Also prinzipiell will ich das was der mod_userdir macht, nur nicht mit domain.tld/~username sondern eben als subdomain username.users.domain.tld
 
Erstelle einen vhost der z.B. auf /var/www/example.org/htdocs zeigt.
Erstelle innerhalb von diesem Verzeichnis pro Subdomain jeweils ein Unterverzeichnis, welches den Namen der Subdomain trägt. Also für forum.example.org -> /var/www/example.org/htdoc/forum, für apfel.example.org -> /var/www/example.org/htdocs/apfel.
Erstelle eine htaccess-Datei mit folgender mod_rewrite-Regel:
Code:
RewriteRule ^(.*)$ %{HTTP_HOST}/$1 [L]

Bei letzterem bin ich mir aber gerade nicht sicher. Teste es aus.
 
Danke für deine Antwort. Aber ich will die htdocs Verzeichnisse nicht unter /var/www haben sondern in den /home Verzeichnissen der einzelnen Benutzern. Der Sinn soll ja sein, dass jeder Benutzer am Server seine eigene Sub-Subdomain hat username.users.domain.tld die als Document root den html Ordner in seinem Homeverzeichnis hat. Sonst ist es relativ unschön, da man in /var/www bei mir root-Rechte braucht um etwas zu tun (was ja gewünscht ist) und in den einzelnen Homeverzeichnissen können die Benutzer ja walten wie es ihnen gefällt :)
 
Dann musst Du pro Subdomain einen eigenen vhost erstellen. Auch das kann man automatisieren, je nachdem wie Du deine DNS-Einträge bearbeiten kannst auch mehr oder weniger einfach.
 
Schonmal gut dass es sicher zum automatisieren geht. Naja ich hab vollen Zugriff aus Zonefile. Ahm am einfachsten fänd ichs aber wenn ich eben nur den *.users Eintrag im Zonefile bräuchte. Wie könnte mal das jetzt genau machen? Ich habe leider überhaupt keine Ahnung mehr wie man das umsetzen könnte..
 
Zurück
Oben