Underdomæner på en smart måde

January 14, 2009 · Posted in Udvikling · 2 Comments 

En nem måde at lave underdomæner på er ved at have wildcard-DNS. Dette opnår man typisk ved at lave et CNAME hvor *.foo.dk peget på hoveddomænet foo.dk.

Når folk ser foo.dk eller www.foo.dk leverer serveren typisk index.php; men forestil jer, at man vil have serveren til at vise domain.php med ‘bar‘ som argument, hvis brugeren fx kalder bar.foo.dk.

Det kan forholdsvist nemt løses vha. følgende i ens .htaccess.

1
2
3
4
RewriteEngine On
RewriteCond  %{HTTP_HOST}  !^(www\.)?foo\.dk$
RewriteRule  .*            %{HTTP_HOST}             [C]
RewriteRule  ^([^.]+)      domain.php?host=$1       [L]

Jeg omskriver kun hvis HTTP_HOST ikke er foo.dk eller www.foo.dk, og jeg omskriver http://bar.foo.dk/ til http://bar.foo.dk/bar.foo.dk for derefter at pille underdomænet ud, og vise domain.php?host=bar.

Bemærk at omskrivningen sker internt, så adresselinien ændrer sig ikke.

Det burde derefter være trivielt at lave nogle checks i domain.php$_GET['host'].

Tricket i ovenstående ligger i at kæde de to rewrite-regler sammen vha. [C] der står for chain.


  • Om websmed.dk

    Jeg hedder Morten, og jeg har udviklet webapplikationer siden slutningen af 90'erne.

    Jeg vil her dele ud af min erfaring, og med jævne mellemrum poste nogle tips og tricks, samt løsningsforslag på generelle dagligdags problemstillinger.

    Jeg har en forkærlighed for PHP og MySQL, hvorfor I nok vil se flest indlæg der vedrører den gren af webudvikling.

    Jeg har en anden blog af mere personlig karakter på mbn.dk, hvor I kan finde kontaktmuligheder m.m.

    Mine indlæg vil tit være baseret på problemstillinger i mit daglige virke, eller i mit eget firma MRLYTICS, hvor jeg sælger kundeundersøgelser samt kundedatabaser.

    Denne side er hostet hos slicehost.

  • Skrevet på Twitter