我正在使用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”文件夹时,它会显示我想要默认显示的内容... 我之前从未配置过虚拟主机,而且就我的教程而言也是如此。
答案 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]
希望这会有所帮助!