Subdomæner med PHP

Subdomæner bruges i stor stil i dag til at brugere nemmere kan finde delindhold på websites.

Der er flere former for subdomæner. Der er dem, hvor:

  • subdomænet er oprettet på et seperat webhotel.
  • subdomænet er et “spejl” af en mappe (test.frande.dk har samme indhold som frande.dk/test/)
  • subdomænet viderestiller til et placering (test.frande.dk viderestiller til frande.dk/test/)

Jeg vil nu vise hvordan man med simpel PHP-kode, og en smule DNS-opsætning (bliver man ikke guidet igennem), kan lave subdomæner, der viderestiller til en given placering.

Jeg tager udgangspunkt i mit eget domæne (frande.dk), men vil gerne notere, at det ikke er sat op på mit domæne – det er ren eksempel!

Opsætning af domænets DNS

Opsætningen af domænets DNS er i dette eksempel meget vigtigt, at have på plads.

For at kunne opsætte viderestillingen via PHP, skal det ønskede subdomænenavn pege på selve “hoveddomænet”. Oftest vil man gøre det med et såkaldt stjerne-alias, hvor man siger, at *.frande.dk peger ind på samme webserver som frande.dk.

Dertil skal man sætte op på web-serveren at *.frande.dk skal pege ind på frande.dk.

I de fleste tilfælde vil man selv kunne sætte DNSen op, mens web-serveren oftest skal sættes op af ens udbyder.

Nu til det spændende

For at starte udvælger vi nogle subdomæner, som vi vil oprette, samt nogle placeringer.

jubii.frande.dk viderestiller til jubii.dk
galleri.frande.dk viderestiller til frande.dk/galleri/
links.frande.dk viderestiller til frande.dk/links.php

Herefter skriver vi følgende PHP-kode:

  1. <?php
  2. $redirect_to = "";
  3. if ($_SERVER[‘HTTP_HOST’] == "jubii.frande.dk")
  4.     $redirect_to = "http://www.jubii.dk/";
  5. else if ($_SERVER[‘HTTP_HOST’] == "galleri.frande.dk")
  6.     $redirect_to = "http://www.frande.dk/galleri/";
  7. else if ($_SERVER[‘HTTP_HOST’] == "links.frande.dk")
  8.     $redirect_to = "http://www.frande.dk/links.php";
  9.  
  10. if (!empty($redirect_to))
  11. {
  12.     header("Location: " + $redirect_to);
  13.     exit;
  14. }
  15. ?>

Det er vigtigt at koden ligger i index.php-filen i roden af webhotellet. Det er den fil, som man skal ramme som standard, når man indtaster f.eks. frande.dk i browseren.
Koden skal ligge allerøverst i filen og være det allerførste, der udføres. På den måde sikrer man, at der ikke udføres noget andet PHP-kode inden man viderestiller.

Nu til forklaringen af koden – det er jo vigtigt for forståelsen af, hvad der sker.

Jeg vælger, da der kan indtastet flere forskellige subdomæner, at gemme den adresse, der skal viderestilles til, i en variabel ($redirect_to).
Til at starte med sætter jeg derfor variablen $redirect_to til ikke at indeholde noget.

Derefter tjekker jeg om adressen, brugeren har indtastet i browseren, er en af de ønskede subdomæneadresser. Det sker vha. en såkaldt if-then-else sætning, hvor jeg spørger om variablen $_SERVER['HTTP_HOST'] er lig de forskellige subdomæneadresser. $_SERVER['HTTP_HOST'] indeholder den adresse, som brugeren indtaster i browseren. Såfremt $_SERVER['HTTP_HOST'] er lig én af de ønskde subdomæneadresser, tildeles variablen $redirect_to den adresse, der skal viderestilles til.

Til sidst tjekker jeg på om variablen $redirect_to er tom. Er den ikke tom, skal den sende data ud til brugerens browser om, at den i stedet skal efterspørge den side, som, der ønskes viderestillet til. Til sidst bruges metoden exit for at sikre, at der ikke udføres mere kode efter denne linje.

Alt i alt et meget simpelt script, der kan hjælpe til at forenkle mange ting. At bruge PHP til dette er blot én af mange måder, hvorpå man kan udføre ovenstående. Det vil jeg dog ikke kigge nærmere på.