Pogledajte određenu poruku
Staro 26. 03. 2010.   #22
dejanr
Dejan Ranisavljevic
Certified
 
Datum učlanjenja: 07.06.2005
Lokacija: Novi Sad
Poruke: 87
Hvala: 12
10 "Hvala" u 6 poruka
dejanr is on a distinguished road
Pošaljite ICQ poruku za dejanr Pošaljite poruku preko MSN za dejanr
Default

Ja sam uspeo da odradim ovo na nivou web server-a jedan virtual host sa rewrite-om na osnovu toga da li postoji fajl u document_root/domains/imedomena

Posto je vec receno da u bazi drzite imena domena za koje ce raditi aplikacija, prilikom dodavanja, brisanja domena potrebno je i dodati i obrisati fajl u domains/ime_domena.

Tipa ako zelimo da nam aplikacija radi za example.com, samo cu touch-ovati taj fajl:

Kôd:
touch domains/example.com
touch domains/www.example.com
touch domains/test.example.com
Tako da ako posetimo http://example.com, mozemo uraditi sledeci rewrite:

Kôd:
set $postoji 0;
        
# ako fajl postoji vrati ga odmah i prekini konekciju
if (-f $request_filename) {
  break;
}
        
# ukoliko postoji trazeni domen
if (-f $document_root/domains/$host) {
  set $postoji 1;
}
        
# ukoliko postoji trazeni domen sa www pod domenom
if (-f $document_root/domains/www.$host) {
  set $postoji "${postoji}2";
}
        
# ukoliko ne postoji domen redirektuj na default host
if ($postoji = 0){
  rewrite ^(.+)$ http://www.example.com$1 last;
break;
}
        
# rewrite-uj trazeni domen sa www pod domenom
if ($postoji = 12){
  rewrite ^(.+)$ http://www.$host$1 last;
  break;
}
Koristim nginx i php fast cgi i evo kako bi to moglo da se resi:

A sve to zajedno za catchall virtual host bi izgledalo ovako:

Kôd:
server {
  listen 80 default;
  server_name     _;
  root  /Users/dejanr/Sites/dpt;
  server_name_in_redirect  off;      
  set $postoji 0;
        
  # ako fajl postoji vrati ga odmah i prekini konekciju
  if (-f $request_filename) {
    break;
  }
        
  # ukoliko postoji trazeni domen
  if (-f $document_root/domains/$host) {
    set $postoji 1;
  }
        
  # ukoliko postoji trazeni domen sa www pod domenom
  if (-f $document_root/domains/www.$host) {
    set $postoji "${postoji}2";
  }
        
  # ukoliko ne postoji domen setuj default host
  if ($postoji = 0){
    rewrite ^(.+)$ http://www.example.com$1 last;
    break;
  }
        
  # rewrite-uj trazeni domen sa www pod domenom
  if ($postoji = 12){
    rewrite ^(.+)$ http://www.$host$1 last;
    break;
  }
        
  location ~ .php$ {
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  $document_root/public$fastcgi_script_name;
    include /usr/local/nginx/conf/fastcgi_params;
  }
}

Poslednja izmena od dejanr : 26. 03. 2010. u 13:33.
dejanr je offline   Odgovorite uz citat