1

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

所以基本上当我打电话时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”文件夹时,它会显示我想要默认显示的内容......我之前从未配置过 vhosts这就是我对它的教程的了解。

4

2 回答 2

1

在您的第一个列表中,您的目录标签具有不同的值,完全没有“公开”。在 DocRoot 值中的“public”之后还有一个斜杠,但在您第二次尝试时被删除。不确定这会有所不同,但我相信建议您不要包含斜杠。

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

于 2011-02-11T15:08:35.750 回答
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 中启用重写模块后,我添加了必要的 .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]

希望这会有所帮助!

于 2010-02-10T11:51:46.657 回答