2010-02-09 125 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并产生干扰。这可能是你在另一个港口取得成功的原因。