2011-08-26 15 views
10

Ho due applicazioni in esecuzione sullo stesso server e mi piacerebbe avere uno servita dalle sottotracciato nella URL (es):Apache alias host virtuale

  • foo.com ->/var/www/foo
  • foo.com/bar ->/var/www/bar

sto cercando di fare un alias, ma non funziona:

<VirtualHost *:80> 
    ServerAdmin [email protected] 
    ServerName foo.com 
    DocumentRoot /webapps/foo/current/public 
    <Directory /webapps/foo/current/public> 
    AllowOverride all 
    Options -MultiViews 
    </Directory> 
    RailsEnv staging 
    Alias /blog /webapps/blog/current 
<Directory /webapps/blog/current> 
    allow from all 
    Options +Indexes 
</Directory> 

Sai perché questo non funziona?

Ho anche provato la direttiva serverpath senza alcun successo.

Sai come ottenere questo?

Grazie in anticipo.

+2

È il vostro virtualhost lavorando a tutti? Cos se hai bisogno di accedervi tramite 'www.' e la radice del dominio, direi che hai bisogno di un' ServerAlias ​​www.foo.com' in ... – DaveRandom

+0

Inoltre, l'app usa qualsiasi 'mod_rewrite 'ing? – DaveRandom

+0

Oh scusa, in realtà l'indirizzo è senza www. L'ho risolto sul post. Il virtualhost funziona, sono in grado di accedervi, ma se vado su/blogs/non fa nulla. Entrambe le applicazioni hanno mon_rewrite all'interno del loro .httaccess – Rafael

risposta

3

Uso AliasMatch invece di Alias:

AliasMatch ^/bar/?(.*) /var/www/bar/$1 

Oppure, nel tuo caso:

AliasMatch ^/blog/?(.*) /webapps/blog/current/$1 
0

Hai pensato di usare un altro sottodominio a parte, come bar.foo.com per l'altra applicazione?

Ecco come quando si imposta che fino:

<VirtualHost *:80> 
    ServerAdmin [email protected] 
    DocumentRoot /var/www/foo 
    ServerName foo.com 
    ServerAlias foo.com www.foo.com 
    ErrorLog logs/foo.com_Error_Log 
</VirtualHost> 
<VirtualHost *:80> 
    ServerAdmin [email protected] 
    DocumentRoot /var/www/bar 
    ServerName bar.foo.com 
    ErrorLog logs/bar.foo.com_Error_Log 
</VirtualHost>