2011-08-26 109 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>