Schrift
[thread]5805[/thread]

Subdomain erkennen



<< >> 9 Einträge, 1 Seite
stb2050
 2003-10-07 20:24
#61549 #61549
User since
2003-08-14
87 Artikel
BenutzerIn
[default_avatar]
Hi Ihr,

meine htaccess-Datei leitet als Error 404 Seite auf ein CGI-Script. Dieses erkennt den Benutzernamen eines Users.

Der User ruft z.B. mit www.domain.de/username auf. Der "username" wird dann erkannt. Das mache ich momentan so:

$url = $ENV{REQUEST_URI};
($u) = $url =~ /\/([^\/]+)\/?$/;

Funktioniert auch hervorragend. Nun möchte ich aber den Aufruf auch über Subdomains ermöglichen.

Wie kann ich diesen kurzen Code so erweitern, dass es auch über z.B. username.domain.de oder www.username.domain.de funktioniert. Die Adressen domain.de/username und domain.de/username/ sollen aber weiterhin funktionieren.

Hat jemand einen Vorschlag oder eine Lösung für mich?

Viele Grüße
Steffen
jan
 2003-10-07 20:30
#61550 #61550
User since
2003-08-04
2536 Artikel
ModeratorIn
[Homepage] [default_avatar]
da musst du auf $ENV{'HTTP_HOST'} zurückgreifen, imho, denn da steht der hostname drin, der angefordert wurde.
betterworld
 2003-10-07 20:31
#61551 #61551
User since
2003-08-21
2613 Artikel
ModeratorIn

user image
Die Information findest Du in $ENV{HTTP_HOST}.

Siehe auch hier
stb2050
 2003-10-08 11:46
#61552 #61552
User since
2003-08-14
87 Artikel
BenutzerIn
[default_avatar]
Hi Ihr,

erstmal danke für Eure antworten.

Wie kann ich das Ganze jetzt aber genau realisieren, also erkennen wie aufgerufen wurde (ob normal oder über Subdomain)? Wie kann ich das http_host in meinen Code von oben integrieren?

Viele Grüße & vielen Dank
Steffen
jan
 2003-10-08 13:38
#61553 #61553
User since
2003-08-04
2536 Artikel
ModeratorIn
[Homepage] [default_avatar]
ich würde überprüfen, ob $ENV{'HTTP_HOST'} deiner hauptdomain entspricht, also example.exmpl oder eben www.example.exmpl. wenn beides nicht zutrifft, kannst du von einer subdomain ausgehen - den usernamen holst du dir da dann so raus:
my ($username) = $ENV{'HTTP_HOST'} =~ m/[^\.]+\.example.exmpl$/i;
wobei du natürlich example.exmpl anpassen musst - damit bekommst du dann eben entsprechend die third-level-domain, wenn du ein www davor hast, setz es mit hinein...
stb2050
 2003-10-09 15:51
#61554 #61554
User since
2003-08-14
87 Artikel
BenutzerIn
[default_avatar]
Hi,

danke, jetzt bin ich schon einen Schritt weiter :-)

Leider ergibt ...

$username = $ENV{'HTTP_HOST'} =~ m/[^\.]+\.domain.de$/i;

Nicht den Benutzernamen (also bei abc.domain.de nur abc), sondern immer 1.

Wo hängt es da denn noch?

Viele Grüße & vielen Dank
Steffen
betterworld
 2003-10-09 16:00
#61555 #61555
User since
2003-08-21
2613 Artikel
ModeratorIn

user image
1 ist wahr, das heisst, dass der regulaere Ausdruck matcht. Du solltest dringend ueber regulaere Ausdruecke lesen.
Code: (dl )
$ENV{HTTP_HOST} =~ m/([^\.]+\.domain\.de)$/i and $username = $1;
\n\n

<!--EDIT|betterworld|1065700860-->
jan
 2003-10-09 16:14
#61556 #61556
User since
2003-08-04
2536 Artikel
ModeratorIn
[Homepage] [default_avatar]
deswegen habe ich die klammern gesetzt. im scalaren kontext wird zurückgeliefert, ob er matcht oder nicht, im listenkontext werden die geklammerten werte geliefert:
Code: (dl )
($username) = $ENV{'HTTP_HOST'} =~ m/[^\.]+\.domain.de$/i;
betterworld
 2003-10-09 17:04
#61557 #61557
User since
2003-08-21
2613 Artikel
ModeratorIn

user image
OK, das geht natuerlich auch
<< >> 9 Einträge, 1 Seite



View all threads created 2003-10-07 20:24.