2011-08-26 144 views
10

我在同一个服务器上运行两个应用程序,我想有一个从子路径的网址服务(IE):Apache的别名,虚拟主机

  • foo.com - > /无功/网络/富
  • foo.com/bar - > /无功/网络/条

我试图做一个别名,但不工作:

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

你知道为什么这不起作用吗?

我也试过没有任何成功的serverpath指令。

你知道如何做到这一点吗?

在此先感谢。

+2

是您的虚拟主机的工作呢?因此,如果你需要通过'www.''和域名的根目录访问它,我会说你需要在那里有一个'ServerAlias www.foo.com' ... – DaveRandom

+0

另外,任何一个应用程序使用任何'mod_rewrite '荷兰国际集团? – DaveRandom

+0

对不起,实际上地址没有www。我在帖子中解决了这个问题。虚拟主机正在工作,我可以访问它,但如果我去/博客/它什么都不做。 这两个应用程序都在他们的.httaccess中有mon_rewrite – Rafael

回答

3

使用AliasMatch,而不是Alias

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

或者,你的情况:

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

你有没有考虑使用另一单独的子域,像bar.foo.com为您其他的应用?

这里是你如何设置了:

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