Pogledajte određenu poruku
Staro 18. 03. 2010.   #1
User
novi član
Na probnom radu
 
Avatar User
 
Datum učlanjenja: 04.11.2006
Lokacija: Beograd
Poruke: 22
Hvala: 5
9 "Hvala" u 5 poruka
User is on a distinguished road
Default Subdomain iz $_SERVER['HTTP_HOST']

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?

Poslednja izmena od User : 18. 03. 2010. u 15:29.
User je offline   Odgovorite uz citat