2011-07-28 60 views
1

我需要我的網站在我的zend應用程序的特定目錄上擁有虛擬主機。當用戶進入www.example.com應該去正規的文檔根目錄,但是當用戶瀏覽到www.example.com/cms它應該去/var/www/cms/public其其.htaccess文件是這樣的:特定目錄上的Apache虛擬主機

SetEnv APPLICATION_ENV development 

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} -s [OR] 
RewriteCond %{REQUEST_FILENAME} -l [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^.*$ - [NC,L] 
RewriteRule ^.*$ index.php [NC,L] 

localhost上添加此行/etc/apache/httpd-vhosts.conf

NameVirtualHost *:80 
<VirtualHost *:80> 
    DocumentRoot "/var/www/cms/public" 
    ServerName persian_literature 
    # This should be omitted in the production environment 
    SetEnv APPLICATION_ENV development 
    <Directory "/var/www/cms/public"> 
     Options Indexes MultiViews FollowSymLinks 
     AllowOverride All 
     Order allow,deny 
     Allow from all 
    </Directory> 
</VirtualHost> 

現在http://localhost//var/www/cms/public和一切工作。我的問題是,我應該如何改變上面的代碼,強制http://localhost/是正常的目錄根(所以我可以使用其他應用程序)和http://localhost/cms成爲虛擬主機?

回答

3

虛擬主機在主機名/域名級別完成,而不是在目錄級別完成。您可以使用別名通過把

Alias /cms /var/www/cms/public 

在.conf文件指向的URI/CMS到您的服務器上的一些其他目錄(這不會在.htaccess工作)

+0

我將該代碼添加到'apache.conf'。現在'http:// localhost/cms /'指向正確的位置,但是應用程序的其他部分,比如'http:// localhost/cms/member/login'不起作用。 –

+0

你必須告訴cms它現在生活在'/ cms'中,而不是'/'。 –

0

也許一個符號鏈接(符號鏈接)?你當然應該有這個入口。你必須把配置(vhost配置,我想,也許.htaccess),Apache應遵循的符號鏈接。