Domenekonfigurasjon

En bevisst domenestrategi er viktig i både markedsførings- og søkemotorhensyn. På kuttisme.no har jeg skrevet et lengre innlegg om akkurat dette, og her får du de tekniske detaljene rundt hvordan domener kan settes opp med webtjeneren Apache.

De aller færreste webtjenere har noen formening om hva slags domenestrategi du ønsker å kjøre. Du er derfor nødt til å konfigurere tjeneren riktig selv. Under finner du noen konfigurasjonseksempler for tipsene i kuttisme.no-artikkelen som fungerer med Apache. Alle konfigurasjonseksemplene antar at Apache er satt opp med mod_rewrite. Eksemplene er testet med 2.2, men burde også fungere for andre versjoner av Apache.

Konfigurasjonen kan settes opp i VirtualHost-konfigurasjonen i httpd.conf/apache2.conf/vhosts.conf. For alle eksemplene må VirtualHost-en settes opp med ServerName og ServerAlias for alle domenene som ønskes brukt. Følgende er mitt eksempel. Det har både .no, .se og .com, med og uten www og en skrivefeilvariant, i både .no, .se og .com. Linjene er holdt korte for lesbarhetens skyld.

ServerName www.eksempel.no
ServerAlias eksempel.no www.eksempel.com eksempel.com
ServerAlias eksempl.no www.eksempl.no eksempl.com www.eksempl.com
ServerAlias eksempel.se www.eksempel.se eksempl.se www.eksempl.se

Redirigering av med og uten www

Med ett domene

Å redirigere fra ikke-www-varianten til www-varianten er relativt enkelt. Det eneste som kreves er en sjekk på domenenavnet (host name) om det inneholder www eller et subdomene. Gjør det ikke sender vi en 301 redirect til nettleseren, slik at www blir satt inn foran domenenavnet.

RewriteEngine On
RewriteCond %{HTTP_HOST} ^eksempel\.no$
RewriteRule /?(.*) http://www.%{HTTP_HOST}/$1 [R=301,L]

Med flere domener

Dette fungerer bra for ett domene, men blir fort litt klønete når du har mange domener. Hvis vi ser på eksempelet med mine tre domener over så ser vi at denne fremgangsmetoden fort blir slitsom. Som anbefalt på kuttisme.no så bruker vi her ett hoveddomene; www.eksempel.no. For å sende alle domener som ikke er et subdomene (inkludert .com og .se) til www.eksempel.no kan vi gjøre følgende:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^[^.]*\.[^.]*$
RewriteRule /?(.*) http://www.eksempel.no/$1 [R=301,L]

Denne er litt mer fleksibel, og gjør som vi ønsker. Mønsteret er nå hva som helst som inneholder ett punktum, dvs domener på formen domene.tld. Alle disse sendes videre til www.eksempel.no, som var det vi ønsket.

Beholde TLD-en

Hadde vi ønsket å beholde TLD, for eksempel for å ha norskt innhold på www.eksempel.no og svenskt innhold på www.eksempel.se kan vi bruke et modifisert oppsett:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^[^.]*\.no$
RewriteRule /?(.*) http://www.eksempel.no/$1 [R=301,L]

RewriteCond %{HTTP_HOST} ^[^.]*\.se$
RewriteRule /?(.*) http://www.eksempel.se/$1 [R=301,L]

RewriteCond %{HTTP_HOST} ^[^.]*\.com$
RewriteRule /?(.*) http://www.eksempel.com/$1 [R=301,L]

Konfigurasjon av forskjellige servere/teknologi på samme domene

Forskjellige teknologi er sannsynligvis den vanligste grunnen til konfigurering av subdomener. Det er ikke nødvendig å ha et subdomene per applikasjon, ei heller per server, per IP eller per noe som helst. Med Apache kan vi bruke mod_proxy for å trikse mellom applikasjonstjenere av forskjellige typer.

Proxy fra en tjener til en annen

Ved hjelp av mod_proxy kan vi sende alle forespørsler etter en gitt URL, eller et mønster med URL-er til en annen server. Denne serveren kan kjøre på samme maskin og en annen port, eller en helt annen server. Dette kan vi bruke til å kjøre forskjellig teknologi på forskjellige applikasjonsservere på forskjellige porter på samme maskin. En proxy på fremsiden sjonglerer mellom de forskjellige applikasjonene.

La oss si at vi har en applikasjon som kjører en Java-applikasjon på port 8080. Denne er kun mulig å nå fra localhost. Videre har vi en Apache-tjener som kjører PHP. Vi ser for oss at nettstedet bruker bloggesoftwaren Wordpress, og har i tillegg en wiki som kjører på Confluence (Java-basert). Det er fristende å sette wikien opp på wiki.eksempel.no, men dette vil potensielt ødelegge for indekseringen. I stedet kan vi gjøre følgende oppsett for å kjøre wikien på http://www.eksempel.no/wiki/ og Wordpress på http://www.eksempel.no, http://www.eksempel.no/omoss/ og alle andre sider:

ProxyPass /wiki http://localhost:8080/wiki
ProxyPass http://localhost:8080/wiki /wiki

Dette oppsettet har en begrensning - dersom applikasjonen som proxyen sender til skal være helt selvholdt er man avhengig av at applikasjonen er satt opp med samme kontekst som den kjøres på på den andre tjeneren. Hvis applikasjonen ikke kjører med samme kontekst vil det bli problemer med linker, linker til stilsett osv.

Hva er dine beste tips til konfigurasjon av god domenestrategi?

Publisert 20. november 2007 under apache og linux.