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;
}
}