Ma belefutottam egy problémába: mi van akkor, ha otthoni kis házi szerverünk van, és regisztrálunk hozzá egy domain-t pl. a www.no-ip.com-on. Egyszerű az eset: az index.html vagy index.php oldalunk megjelenik.

De mi van akkor, ha mi már több különböző domaint regisztrálunk és azt szeretnénk, hogy a címet beírva azonnal az adott oldal töltődjön be, anélkül, hogy a felhasználó a többiről tudomást szerezne.

Mivel nem volt kedvem szervert konfigolni inkább egy másik utat találtam ki:

index.php<?PHP

$dirs['gyik.sytes.net'] = 'gyik';

$dirs['tutorial.hu'] = 'tutorial';

if($_SERVER['REQUEST_URI'] == '/')

{

$uri = '/index.php';

}

else

{

$uri = $_SERVER['REQUEST_URI'];

}

if(array_key_exists($_SERVER['HTTP_HOST'], $dirs))

{

if(!file_exists($dirs[$_SERVER['HTTP_HOST']] . $uri))

{

print "A keresett file nem található a szerverünkön!";

exit;

}

else

{

chdir($dirs[$_SERVER['HTTP_HOST']]);

ini_set("include_path", $dirs[$_SERVER['HTTP_HOST']] . PATH_SEPARATOR . ini_get("include_path"));

include($dirs[$_SERVER['HTTP_HOST']] . $uri);

}

}

?>

Mit csinál ez a kód?

A kódban - mint ahogy az az első két sorban italic-al ki van jelölve - akárhány domain nevet megadhatunk a következő formában:

kód $dirs['domain név'] = 'könyvtár neve';

Ebben az esetben a domain név NE tartalmazza a http:// protokoll előtagot, se filenevet, és a végén ne legyen ott a / jel.

Pl.:

gyik.sytes.net -> Jó

gyik.com -> Jó

http://www.gyik.com/ -> Rossz

http://www.gyik.com/index.php -> Rossz

Na visszatérve eredeti kérdésünkre... A szkript maga annyit csinál, hogy a dőlt-tel (italic) jelzett sorok feltöltenek egy ún. (egy dimenziós) tömböt (array), amelyben az elemek kulcsa (neve - key) az adott domain név, az értéke pedig az a könyvtár, ami az adott domain névnél a DocumentRoot értéket kell, hogy felvegye.

Ezután megnézi, hogy van-e olyan elem a fentebb feltöltött tömbben, amelynek a kulcsa megegyezik azzal a domain-el, amiről a felhasználó információkat töltött le. (Ezt a PHP a $_SERVER['HTTP_HOST'] változóban tárolja).

Ha talál ilyet, akkor megnézi, hogy a hozzá tartozó könyvtárban létezik-e olyan nevű file, amit a felhasználó lekért. Ha igen, akkor beállítja, hogy az esetleges include és require függvényeknél az adott könyvtárban is keresse a fileokat, és "behúzza" azt a filet. Ha nem talál, akkor visszadob egy üzenetet, hogy "404 - A keresett file nem található szerverünkön!"

Ha viszont az adott domain-hez nincs megadva könyvtár, akkor a user kap egy üzenetet, hogy eltéved az internet dzsungelében, és bocs.. :)

Remélem más is hasznát veszi, nekem tetszik, mert nem kell szenvednem a szerver konfiggal...

Egy ötletként megjegyezném, hogy az index.php-vel azonos könyvtárba érdemes egy .htaccess fájlt is elhelyezni, melynek a tartalma a következő legyen:

.htaccessErrorDocument 404 /index.php

Ezután bármely fájlt próbálják meghívni a szerveren (pl. egy teszt.php-t, vagy egy nemlétező phpinfo.php-t), mindig az index.php-ra fognak jutni. Ez köszönhető annak, hogy a nemlétező fájl meghívásakor egy 404-es hibát kapnak, ami meghívja az index.php-t.

(Zárójeles megjegyzés: a tutorial-ban szereplő módszert még akkor is érdemes használni, ha pl. ingyenes szolgáltatónál van egy regisztrált tárhelyünk, és ugyanarra a tárhelyre több különböző oldalt szeretnénk feltenni.)

A szkript egyetlen apró szépséghibája, hogy a kezdőlapunknak MINDENKÉPP index.php-nak kell lennie minden domain esetében!

Ha más nincs, nevezzük át a html filet, az eredmény ugyanaz lesz.

szerző: BlackY

Harder

Harder

Profil

Korábbi hozzászólások (1)

A régi blogon érkezett hozzászólások archívuma. Új hozzászólást már nem lehet írni.

  1. Gézawww.domain-atiranyitas.cn.hu

    Itt találhatsz elég sok infót a domain átirányításokról!
    hxxp://www.domain-atiranyitas.cn.hu

Van hozzáfűznivalód? Írj nekem közvetlenül.

Kapcsolat