2010-02-09 43 views
1

我建立一個Web應用程序與Zend框架,我需要我的應用程序指向應用程序的「公共」文件夾:我很困惑與Apache虛擬主機

所以基本上,當我打電話http://localhost/myapp 它應該顯示http://localhost/myapp/public/

我創建了一個名爲MYAPP成一個虛擬主機文件/ etc/apache2的/網站可用/:

<VirtualHost *:80> 
DocumentRoot /var/www/myapp/public/ 
<Directory /> 
    Options FollowSymLinks 
    AllowOverride None 
</Directory> 
<Directory /var/www/myapp/> 
    Options Indexes FollowSymLinks MultiViews 
    AllowOverride None 
    Order allow,deny 
    allow from all 
</Directory> 

</VirtualHost> 

但它不工作。當我打電話給http://localhost/myapp時,它顯示應用程序的目錄結構,當我點擊「公共」文件夾時,它顯示默認顯示的內容... 我從未配置過vhosts,我拿到了關於它的教程。

回答

0

好,我發現了一種莫名其妙...我不認爲這是必要的正確的/最佳途徑,但...

在httpd.conf(在apache2目錄):

Listen 10089 

<VirtualHost *:10089> 

    DocumentRoot "/var/www/myapp/public" 

    <Directory "/var/www/myapp/public"> 

     Order allow,deny 

     Allow from all 

    AllowOverride all 

</Directory> 

</VirtualHost> 

我的應用程序現在可以通過localhost訪問:10089 在apache中啓用重寫mod之後,我添加了必要的.htaccess,一個位於我的應用程序根目錄,將所有內容重定向到index.php(Zend框架支持友好的URL導航並以此方式工作):

RewriteEngine on 

RewriteRule .* index.php 

和我的公共文件夾內的第二.htaccess文件讓人們訪問.JPG,.ICO等文件,而不是被重定向到指數的一切:

RewriteEngine On 

RewriteCond %{REQUEST_FILENAME} -s [OR] 

RewriteCond %{REQUEST_FILENAME} -l [OR] 

RewriteCond %{REQUEST_FILENAME} -d 

RewriteRule ^.*$ - [NC,L] 

RewriteRule ^.*$ /index.php [NC,L] 

希望這將幫助一些!

1

在您的第一個列表中,您對Directory標籤有不同的值,完全沒有「公共」。 DocRoot值中的'public'後面還有一個斜線,但在第二次嘗試時刪除。不確定這是否有所作爲,但我相信建議您不要包含尾部斜線。

另外,只是想知道...你在本地機器上運行這個嗎?如果我在我的apache服務器之前開始運行,那麼我有Skype想要使用端口80的麻煩。如果已經使用了80,Skype將使用不同的端口。如果不是Skype,可能會有另一個應用程序使用端口80併產生干擾。這可能是你在另一個港口取得成功的原因。