Aplikacija prikazuje sadržaj na osnovu domena na kome se servira (uključujući i poddomen). Jedni podaci se prikazuju za
www.domain.com, drugi za dev.domain.com, treći za test.domain.com i tako dalje.
Pokušavam da rešim sledeći problem: automatski izvršiti redirekciju na www poddomen ukoliko korisnik dođe na domen bez ikakvog poddomena. Na praktičnom primeru:
1) korisnik je došao na example.com => izvrsiti redirekciju na
www.example.com
2) korisnik je došao na test.еxample.com (ili
www.example.com ili dev.example.com) => ne menjati ništa
Trenutno radim preg_match nad $_SERVER['HTTP_HOST']:
Kôd:
preg_match ("%^(?:([A-Za-z0-9\-_]+)\.)?([^/.]+)\.([^/:]+)(\:[0-9]+)?%i", $_SERVER['HTTP_HOST'], $data);
To radi dobro sa TLD koji nemaju second level, jer odmah saznam da mi je $data[1] prazan, prependujem www i izvrsim redirekciju bez upita u bazu.
Problem nastaje sa raznim ccTLD i second level TLD, kao sto su .co.uk ili .com.br - tada sam primoran da vršim upite u bazu što želim da izbegnem.
Uzmimo za primer da korisnik dolazi na example.co.uk, a da se aplikacija servira sa
www.example.co.uk. Trenutni regex ce vratiti:
$data[1] = 'example';
$data[2] = 'co';
$data[3] = 'uk';
Tj dobiću da je pronađen subdomain 'example'. Potom vršim upit u bazu po domenu 'example.co.uk'. Ukoliko ne dobijem rezultat, pokušavam sa 'www.example.co.uk'. Tim upitom nalazim domen i vršim redirekciju.
U slučaju da ni 'www.example.co.uk' domen nije nađen u bazi, izvrsiću redirekciju na neki treći domen, ali to je trenutno manje bitno.
Ima li neko bolju ideju kako bolje razrešiti ovaj problem?