Webserver public_html als Subdomain in lighttpd

gechse

fühlt sich hier wohl
Hallo Zusammen,

nach langer Zeit bin ich wieder einmal hier. Und dann auch noch gleich mit einer etwas schwierigen Frage:

Auf einem Vserver habe ich unter Debian Lighttpd als Webserver installiert.

Jeder Nutzer hat ein Verzeichnis public_html.
Dieses ist erreichbar unter
http://www.domain.tld/~USER

Dieses ~USER möchte ich als Subdomain VOR der Domain stehen haben.
Also
http://www.USER.domain.tld
Mit oder ohne www.
Lighttpd wird komplett über lighttpd.conf konfiguriert.
Inzwischen habe ich schon alles ausprobiert, was mir einfällt. aber ich bekomme das einfach nicht hin.

Kann mir jemand weiterhelfen?

Danke allerseits.

Gruß
 
Muss es zwingend Lighthttp sein, kann der das überhaupt?

Für Debian mit Apache2:

:~# a2enmod userdir

Im Homedirectory jedes Nutzers (der etwas veröffentlichen will) ein Verzeichnis public_html erstellen.

Aufruf: z.B. http://www.domain.tld/~alice
 
Sorry, dass ich erst heute antworte, bin einfach nicht früher dazugekommen.

@MaXg

http://www.domain.tld/~USER bekomme ich unter lighty mit dem Kommando
Code:
 lighty-enable-mod userdir
. Einfacher geht es nicht. Und ist bereits aktiviert.
Außerdem ist mein VServer verdammt klein.

@Supernature.

Die komplette lighttpd.conf habe ich unter pastebin - Anonymous - post number 1455809 gespeichert.

Soweit habe ich es verstanden, die Module
  • "mod_rewrite",
  • "mod_redirect",
  • "mod_evhost"
müssen aktiviert sein.

Verantwortlich dürfte diese Einstellung sein:
# define a pattern for the host url finding
# %% => % sign
# %0 => domain name + tld
# %1 => tld
# %2 => domain name without tld
# %3 => subdomain 1 name
# %4 => subdomain 2 name
#
# evhost.path-pattern = "/home/storage/dev/www/%3/htdocs/"

Wahrscheinlich verstehe ich auch nicht so richtig wann was hier zu nehmen ist.

Oder ist es eine Rewrite-Anweisung.
Schließlich soll jeder User bei Neuanlage sein http://www.USER.domain.tld bekommen.

Ach ja: und ganz wichtig, natürlich ohne SQL - er ist eben verdammt klein.

Vielleicht kann mir da doch noch jemand weiterhelfen.
 
Wie viele Nutzer sind es denn?
Wenn es eine überschaubare Anzahl ist, kannst Du die doch von Hand festlegen ohne reguläre Ausdrücke:

Code:
$HTTP["host"] == "[COLOR="Red"]user1[/COLOR].example.org" {
  server.document-root = "/home/[COLOR="Red"]user1[/COLOR]/public_html/" 
}

Für den nächsten Nutzer kopierst Du die Zeilen und passt den Usernamen an.

Wenn es doch automatisch sein muss, lies mal hier weiter:
http://redmine.lighttpd.net/projects/1/wiki/Docs:ModEVhost

Wenn ich das richtig verstanden habe, müßtest Du in etwa so eine Zeile einfügen:
Code:
$HTTP["host"] =~ "example\.org" {
      evhost.path-pattern = "/home/%3/public_html/" 
  }

PS:
Code:
#
#
#
# define a pattern for the host url finding
#
# %% => % sign
#
# %0 => domain name + tld
#
# %1 => tld
#
# %2 => domain name without tld
#
# %3 => subdomain 1 name
#
# %4 => subdomain 2 name
#
#
#
# evhost.path-pattern = "/home/storage/dev/www/%3/htdocs/"
#
evhost.path-pattern = "/home/%3/public_html/"
So geht es nicht, das "path-pattern" muss in einer vollständigen Konfiguration eingebettet sein ;)

PPS:
Wenn Du auch noch die www.username.example.org haben willst, dann schau Dir mal die Beispiele hier an:
http://redmine.lighttpd.net/projects/lighttpd/wiki/Docs:ModRedirect#Example
 
Zuletzt bearbeitet:
Danke,
hatte ich auch schon einmal nur falsch escaped - peinlich peinsam - rot werd -

Trotzdem jetzt funktioniert es, vielen Dank.

Gruß
 
Oben