logo

INTERNETNE STORITVE

- IZDELAVA SPLETNIH STRANI - OBLIKOVANJE - PROGRAMIRANJE DODATKOV

PHP - Virtualne pod-domene - virtual subdomains

Vrsto spletnih strani vam ponuja lastno pod-domeno naprimer roky.album.net ali karkoli.vašadomena.com. Kako to dosežemo? Za vsaka uporabnika kreiramo novo pod-domeno? Ne, pomagamo si s virtualnimi pod-domenami.

Princip delovanja je podoben kot pri kreiranju prijaznih URL-jev za uporabnika in iskalnike. Karkoli uporabnik vpiše v naslovno vrstico (address bar) mod_rewrite modul preusmeri na našo glavno domeno (index.php) kjer s PHP-jem preberemo ali je uporabnik vpisal kakšno pod-domeno ali ne. Na podlagi vpisane pod-domene pa potem vrnemo podatke le za tistega uporabnika (naprimer vrnemo slike, ki se virtualno nahajajo na vpisana_pod_domena oz. roky.album.com naprimer). S tem uporabniku damo možnost personalizacije ter lažjega pomnjenja naslova, kjer lahko dostopa do svojih slik, saj bi se uporabnik težje zapomnil index.php?album=roky&list=view kot pa roky.album.com. Torej potrebujemo:

  • mod rewrite(Apache) ali ISAPI Rewrite (IIS)
  • .htaccess

Ko vam mod_rewrite modul deluje (poglejte s phpinfo) dodajte sledečo vsebino pod .htaccess:

PHP:
  1. RewriteEngine on
  2. RewriteCond %{HTTP_HOST} !^www\.vasa_domena\.com$ [NC]
  3. RewriteRule (.*) http://www.vasa_domena.com/$1 [R=301,L]

S tem dosežemo, da vsakega uporabnika preusmerimo na root domene ne glede na to kaj uporabnik vpiše. Sedaj potrebujemo še PHP kodo, ki bo prebrala kakšno pod-domeno je uporabnik vpisal:

PHP:
  1. function getSubDomain(){
  2.    $full_url   = sprintf($_SERVER['HTTP_HOST']);
  3.    $subdomain   = '';
  4.  
  5.    for($i = 0; $i <= strlen($full_url); $i++){
  6.       $dummy = substr($full_url, $i, 1);
  7.       if($dummy == "." and $subdomain !== 'www') break;
  8.       $subdomain = $subdomain.$dummy;
  9.    }
  10.  
  11.    // Get Subdomain List
  12.    if (strpos($subdomain, 'www') !== false){
  13.        $subdomain = str_replace('www.', '', $subdomain);
  14.    }
  15.  
  16.    $subdomain = ($subdomain <> "www") ? $subdomain : false;
  17.    $subdomain = ($subdomain === 'trsplet')  ? false : $subdomain; // mišljeno kot short host, recimo http://test.com, bi napisal === 'test'
  18.    $subdomain = ($subdomain === '') ? false : $subdomain;
  19.  
  20.    return $subdomain;
  21. }

Sedaj lahko preprosto preberemo katera pod-domena je bila vpisana:

PHP:
  1. $subdomain = getSubDomain();
  2.  
  3. if ($subdomain !== false) {
  4.   echo getAlbum($subdomain);
  5. } else {
  6.   echo welcomePage();
  7. }

Dodatne informacije:

Če potrebujete še kakšno dodatno informacijo ali pa imate kakšne težave nam to sporočite pod komentarje.

11x komentirano na “PHP - Virtualne pod-domene - virtual subdomains”

  1. Luka je napisal:

    Hvala, tole je pa uporabno.

    Zmeraj me je pa zanimalo če obstaja kakšen način da bi v URLjih uporabil tudi šumnike in vse tiste čudne znake. Tako da bi imel naslov naprimer tak:
    http://~{nekaj}~.stran.si
    ali
    http://www.stran.si/~{nekaj}~

    Se to da?

  2. Roky je napisal:

    Misliš http://šumniki.stran.si ?

  3. Luka je napisal:

    malo pozen odgovor, ker me ni bilo doma..

    ja mišljeno je bilo tako, da lahko uporabljaš šumnike in ostale "čudne" znake..

  4. Roky je napisal:

    Ne, tega se ne da.

  5. Luka je napisal:

    no saj se mi je zdelo..

    Kaj pa če bi naredil tako, da bi zadevo izvedel preko get metode.. Recimo da želiš v URLju prikazati uporabniško ime s šumniki. Bi lahko naredu potem link v obliki:

    http://www.stran.si/index.php?id=1234&nick=čžš

    oz. z rewrite v htacces da bi dobila nekaj takega:

    http://www.stran.si/1234/čžš

    To predvidevam da bi šlo? Ker bi potem tako ali tako prebral id uporabnika in je prepoznava znakov popolnoma nepomembna, je tam le zaradi optimizacije..

  6. Roky je napisal:

    Tudi to ni mogoče (vsaj jest ne vem za opcijo), ker ti bo browser č,š,ž-je nadomestil s drugimi znaki.

  7. glavic je napisal:

    Firefox3 ne zamenja šumnikov v urlju, tako bo http://www.stran.si/index.php?id=1234&nick=čžš ostal isti

  8. Roky je napisal:

    Pri meni ni:
    http://www.stran.si/index.php?id=1234&nick=%E8%9E%9A

  9. Luka je napisal:

    kombinacijo šumnikov čžš spremeni v nek kitajski znak :D --> 螚

    drugače pa škoda ker se nikakor ne da spravit šumnikov gor.. bi prišlo zelo prav pri optimizaciji :/

  10. mitja je napisal:

    @Luka: Še vedno bo tebi kot slovencu delovalo. Drugje zagotovo ne.

  11. Luka je napisal:

    stran je za slovensko govoroče obiskovalce, tako da mi je praktično vseeno če tistemu 0.01% tujcev, ki zaidejo gor stran ne deluje :)
    Ampak ok, če ne gre pač ne gre.. bomo še naprej uoprabljali csz.. sej google kar lepo zamenja če je iskalni niz s šumniki v takega brez..

Dodaj komentar