- Home
- Categorie
- Gaming, Hardware e Software
- Software (Windows - Linux - Apple) & Applicazioni
- [APACHE] Rewriterule dentro un Virtualhost che non funziona
-
[APACHE] Rewriterule dentro un Virtualhost che non funziona
Salve a tutti,
ho un virtualhost così configurato:<VirtualHost *> ServerAdmin ...@... DocumentRoot /var/www/dir <Directory /var/www/dir> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all </Directory> ServerName *.dominio.it RewriteEngine On RewriteRule ^(.*).dominio.it /var/www/dir/$1/ </VirtualHost>
In pratica vorrei che le richieste per indirizzi di terzo livello venissero redirezionati nelle directory apposite.
Solo che non funziona in quanto ogni richiesta di questo tipo va a finire nella DocumentRoot definita ("/var/www/dir"), fregandosene della regola.Sto sbagliando qualcosa?
grazie
-
Cioè non ho capito se io scrivo
fdghsfdgsh.tuodominio.it oppure
jdscfds.tuodominio.it oppure
3765e832.tuodominio.it deve rispondere il tuo web server con una sezione apposta dedicata ?
-
@linuxmafiait said:
Cioè non ho capito se io scrivo
fdghsfdgsh.tuodominio.it oppure
jdscfds.tuodominio.it oppure
3765e832.tuodominio.it deve rispondere il tuo web server con una sezione apposta dedicata ?
Si, e deve puntare rispettivamente a:
/var/www/fdghsfdgsh/
/var/www/jdscfds/
/var/www/3765e832/
-
<VirtualHost *:80>
ServerAdmin [EMAIL="[email protected]"][email protected][/EMAIL]
DocumentRoot /var/www/htdocs/tuodominio
ServerName tuodominio.it
</VirtualHost>
-
@linuxmafiait said:
<VirtualHost *:80>
ServerAdmin [EMAIL="[email protected]"][email protected][/EMAIL]
DocumentRoot /var/www/htdocs/tuodominio
ServerName tuodominio.it
</VirtualHost>
Non ho mica capito, come fa a fare il redirect verso le directory giuste?
-
Il redirect lo fa il web server quando riceve la richiesta per un determinato dominio :
Se nel mio browser scrivo sottodominio.tuodominio.it e nel tuo file di conf c'è una direttiva come questa :
<VirtualHost *:80>
ServerAdmin [EMAIL="[email protected]"][email protected][/EMAIL]
DocumentRoot /var/www/htdocs/tuodominio/tuosottodominio
ServerName sottodominio.tuodominio.it
</VirtualHost>il web server mi mostrerà le pagine residenti nella dir /var/www/htdocs/tuodominio/tuosottodominio del tuo server.
-
@linuxmafiait said:
Il redirect lo fa il web server quando riceve la richiesta per un determinato dominio :
Se nel mio browser scrivo sottodominio.tuodominio.it e nel tuo file di conf c'è una direttiva come questa :
<VirtualHost *:80>
ServerAdmin [EMAIL="[email protected]"][email protected][/EMAIL]
DocumentRoot /var/www/htdocs/tuodominio/tuosottodominio
ServerName sottodominio.tuodominio.it
</VirtualHost>il web server mi mostrerà le pagine residenti nella dir /var/www/htdocs/tuodominio/tuosottodominio del tuo server.
Capito, ma il mio problema è che i domini di 3° livello sono dinamici, quindi mi serve una rewriterule per redirezionare "qualsiasi" richiesta nella directory giusta.
-
Nessuno sa darmi una mano?
-
Non ho mai affrontato un problema simile al tuo fin' ora però provo a risponderti lo stesso con una soluzione che mi è venuta a mente (potrebbero benissimo essercene altre... )
Premessa:
quanto segue l' ho trovato da sezione FAQ di Supporto da gestore di hosting italiano.Come devo procedere per impostare un dominio di 3* livello del tipo http://forum.dominio.ext?
Se desidera procedere con la creazione dei sottodomini deve agire come segue:
-
andare nel CPANEL e cliccare sull'icona SERVIZIO DNS per poi accedere al pannello del DNS.
-
a questo punto aggiungere un record di tipo CNAME con nome ad esempio "forum" e valore "www.dominio.ext." (attenzione al puntino finale).
-
Uscire dal CPANEL e tornare al pannello di controllo accedendo alla sezione "FILE MANAGER".
-
Dal file manager se in elenco non compare un file ".htaccess" procedere alla creazione dello stesso cliccando su "nuovo file"
-
Nella casella "nome per il nuovo file" scrivere ".htaccess" e nello spazio sottostante eliminare la scritta "[Enter code here]" e sostituirla con ad esempio:
###################
RewriteEngine On
Options +FollowSymlinks
RewriteBase /
RewriteCond %{HTTP_HOST} forum.dominio.ext
RewriteCond %{REQUEST_URI} !sottodir/
RewriteRule ^(.*)$ sottodir/$1
###################dove: forum.dominio.it è il nome da assegnare al sottodominio, sottodir e' il nome della directory di cui visualizzare il contenuto.
A questo punto il mio cervello malato ha estrapolato una soluzione del genere ovvero creare uno scriptino magari in php che:
- crei una sotto directory sulla root del tuo dominio con nome che gli indichi te o uno random;
- vada a scrivere il nome della nuova directory nel .htaccess del tuo dominio di secondo livello cosi da aggiornare le regole per il mod_rew;
UPDATE]Magari questo non servirebbe:UPDATE]Ora mancherebbe di capire come poter dire ad Apache che esiste un dominio di terzo livello con nome = a dir creata sotto tuo_dominio.ext
... ma magari è un passo verso la soluzione definitiva.
-
-
@KING_Hack said:
Non ho mai affrontato un problema simile al tuo fin' ora però provo a risponderti lo stesso con una soluzione che mi è venuta a mente (potrebbero benissimo essercene altre... )
[CUT]
... ma magari è un passo verso la soluzione definitiva.
Può essere una soluzione, ma il punto è perchè il rewriterule non funziona nel file dei virtual host, visto che dovrebbe funzionare...:(In pratica dovrei poter prendere il codice che mi hai scritto tu e inserirlo nel file dei virtual host.
-
...provo ad andare per tentativi a questo punto.
Allora immagino che potrebbe esserci un problema a monte ovvero, sei sicuro che Apache sia stato compilato con quel modulo attivo?
Verifica con un file per es test.php in cui ci metti all' interno questo:
<?php phpinfo(); ?>
Poi accertati che compaia nel blocco Loaded Modules la voce mod_rewrite
-
@KING_Hack said:
...provo ad andare per tentativi a questo punto.
Allora immagino che potrebbe esserci un problema a monte ovvero, sei sicuro che Apache sia stato compilato con quel modulo attivo?
Verifica con un file per es test.php in cui ci metti all' interno questo:
<?php phpinfo(); ?>
Poi accertati che compaia nel blocco Loaded Modules la voce mod_rewrite
C'è, sicurissimo.
-
Ho trovato questo 3d sulla lista del LUG di Prato, magari ti può esser utile:
http://lists.prato.linux.it/pipermail/plug/2006-April/033851.htmlOra che ho dato un occhio alla discussione della lista, ne deduco chiaramente che cmq bisogna metter per forza mano anche al server DNS.
-
@KING_Hack said:
Ora che ho dato un occhio alla discussione della lista, ne deduco chiaramente che cmq bisogna metter per forza mano anche al server DNS.
C'è già tutto anche nel DNS...ora provo a dare un'occhiata al link, grazie...:)
-
Sto provando su un mio serverino la regola di Mod_rewrite che hai impostato sul tuo Vhost... ed ho provato ad impostare quanto scritto sulla discussione in lista per quanto riguarda il server dns...
anche a me da picche
-
@KING_Hack said:
Sto provando su un mio serverino la regola di Mod_rewrite che hai impostato sul tuo Vhost... ed ho provato ad impostare quanto scritto sulla discussione in lista per quanto riguarda il server dns...
anche a me da picche
Non capisco infatti, si tratta di una normalissima regola che trovi in ogni howto dei virtual host di apache...:(
-
Purtroppo neanche a me è mai capitata una configurazione del genere ma devo dire che è molto interessante.
In questo periodo non ho molto tempo quindi non posso fare nessun tipo di prova sui miei server però ho trovato questo link
http://www.risorse.net/apache/url_redirect.asp
vedi un po cosa puoi tirarci fuori e comunque non dimenticare mai i siti di OpenSkills e di Sistemistiindipendenti.
-
@linuxmafiait said:
Purtroppo neanche a me è mai capitata una configurazione del genere ma devo dire che è molto interessante.
In questo periodo non ho molto tempo quindi non posso fare nessun tipo di prova sui miei server però ho trovato questo link
http://www.risorse.net/apache/url_redirect.asp
vedi un po cosa puoi tirarci fuori e comunque non dimenticare mai i siti di OpenSkills e di Sistemistiindipendenti.
Ho risolto inserendo questo codice:RewriteEngine on RewriteCond %{HTTP_HOST} !^community\. RewriteCond %{HTTP_HOST} ^([^.]+)\.dominio\.it RewriteRule ^(.*)$ /var/www/community/%1/index.html
La cosa strana è che se tolgo "index.html" dalla rewriterule il tutto non funziona perchè quando apro la pagina ottengo un indirizzo di questo tipo:
http://dir.dominio.it/index.html/index.html/.../index.html/In pratica "index.html" viene ripetuto una ventina di volte.
Sapete perchè?
Cmq tranne questo piccolo intoppo con il codice iniziale funziona.
Aggiungo: se lo stesso codice lo metto nel file .htacces non ho questo problema.