Több domain 1 gépre irányítása


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:

.htaccess

ErrorDocument 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

Kapcsolódó bejegyzések:
  • Biztos találkoztál már olyan oldallal, mely megmutatta a látogatók aktuális IP-jét és/vagy HOST-ját. A módszer nem túl bonyolult, mint az a leírásból is kider&uu …

  • Weblap tervezésénél az egyik legfontosabb dolog az átláthatóság. Ennek egyik alapeleme az, hogy a különböző dolgokat ABC sorrendben írjuk ki… Én ma belefutott …

  • A Harder által írt megoldás is tökéletesen működik, ám van egy szépséghibája: minden egyes új tiltott IP-nél bele kell nyúlni a kódba. Ezért összedobtam egy ki …

  • A devpapers.com -on találtam egy hasznos leírást, amiben egy olyan kódot mutattak be, mely segítségével egy adott könyvtárból véletlenszerűen lehet képet választ …

  • A szerverről történő oldal-letöltéseket számolja. A működéshez PHP-t futtató szerverre lesz szükségünk. A scriptet be lehet illeszteni a …

A cikket beküldte: BlackY ()

1 hozzászólás

  1. Géza says:

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

Szólj hozzá
a Több domain 1 gépre irányítása c. bejegyzéshez

- Engedélyezett HTML elemek: <a> <em> <strong> <ul> <ol> <li>
- Forráskód beküldéséhez tedd a kódot ezek közé: <pre lang="php" line="1">Kódrészlet helye itt</pre>