Ciao a tutti,
stavo valutando la possiblità di gestire i sottodomini attraverso le direttive del mod_rewrite in un htaccess per poter assegnare particolari configurazioni senza dover intevenire con i virtualhost.
Avevo ipotizzato una struttura delle directory del genere
l'htaccess sta dentro /var/www/dominio.tld/e il virtualdocumentroot viene chiamato cosìcodice:/var/www /dominio.tld/ /httpdocs/ /www/ /pippo/ /sub/
VirtualDocumentRoot /var/www/%-2.0.%-1/
sarà poi compito delll'htaccess "smistare" le richieste per andarle nelle rispettive subdirectories considerandole domini di terzo livello
www.dominio.tld -> dominio.tld/httpdocs/www
pippo.dominio.tld -> dominio.tld/httpdocs/pippo
sub.dominio.tld -> dominio.tld/httpdocs/sub
...
In questo modo con 2 sole regole (una nel conf e una nell'htaccess) posso gestire più domini senza dove mettere una regola per ogni dominio.
Passiamo all'atto pratico e qua ho trovato i dolori (soprattuto per le espressioni regolari che sinceramente non mastico molto bene)
RewriteEngine On
RewriteCond %{HTTP_HOST} (.+)\.(.+)\.(.+) [NC]
RewriteRule ^$ "/httpdocs/%1/$1" [L]
RewriteCond %{HTTP_HOST} (.+)\.(.+)\.(.+) [NC]
RewriteRule ^([^/]+)$ "/httpdocs/%1/$1" [L]
Sicuramente non sarà il metodo più raffinato del mondo... ma funziona a parte una condizione (grave cmq)
in questo modo tutte le chiamate
http://www.dominio.tld/
http://www.dominio.tld/file.html
http://pippo.dominio.tld/altrofile.php
funzionano alla perfesione.. l'url rimane con il dominio di terzo livello ma i file vengono aperti correttamente.
1° Limite
----------
non riesco a far rewrittare correttamente le sottocartelle
es.:
http://www.dominio.tld/prova/
mi tenta di aprire /httpdocs/prova e non /httpdocs/www/prova e non so cosa aggiungere e/o dove modificare nei precedenti rewriterule per fargli digerire questa cosa.
2° Limite
--------
se scrivo
http://www.dominio.tld/httpdocs/
mi si apre effettivamente la directory httpdocs/ contenente tutte le directory dei sottodomini permettendo la pienza navigazione fra di essi senza "cambiare" il dominio di terzo livello.. ed è una cosa che vorrei evitare con un forbidden magari..
ma con la regola
RewriteCond %{REQUEST_URI} ^/httpdocs/.*$ [NC]
RewriteRule ^.*$ - [F] [NC] [L]
mi manda in forbidden tutto poiché anche i precedenti rewrite considera il REQUEST_URI con httpdocs.
Suggerimenti ? Aiuti.. secondo me se ci si riesce a tirar su una struttura del genere semplificherebbe di non poco la gestione dei domini e le relative configurazioni separate per dominio![]()
grazie