我对Apache vhost感到困惑

时间:2010-02-09 09:24:25

标签: apache localhost vhosts

我正在使用Zend Framework构建一个Web应用程序,我需要将我的应用程序指向应用程序的“public”文件夹:

所以基本上我打电话给http://localhost/myapp 它应该显示http://localhost/myapp/public/

我在/ etc / apache2 / sites-available /:

中创建了一个名为myapp的虚拟主机文件
    <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时,它会显示应用程序的目录结构,当我点击“public”文件夹时,它会显示我想要默认显示的内容... 我之前从未配置过虚拟主机,而且就我的教程而言也是如此。

2 个答案:

答案 0 :(得分:1)

在您的第一个商家信息中,您对“目录”标记的值不同,完全不使用“公开”。 DocRoot值中的'public'后面还有一个尾随斜杠,但在第二次尝试时删除了斜杠。不确定是否有所作为,但我相信建议您不要包含尾部斜杠。

另外,只是想知道......你在本地机器上运行吗?如果我在我的apache服务器之前开始运行,那我想要使用端口80的Skype有问题。如果已经使用80,Skype将使用不同的端口。如果不是Skype,可能有另一个应用程序使用端口80并干扰。这可能就是你在另一个港口取得成功的原因。

答案 1 :(得分: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]

希望这会有所帮助!