在Wamp服务器上为Zend应用程序设置VirtualHost

我正在学习这个教程来学习如何使用ZendFramework来开始一个项目

http://framework.zend.com/manual/1.12/en/learning.quickstart.create-project.html

当我设置虚拟主机时,我卡住了。 如果我完全按照教程所说的那样,它会显示一个错误(在我所有的项目中,zend或者不),说这个文件没有find。

然后,我发现这个教程在StackOverflow非常方便

无法在WAMP上运行zend框架MVC应用程序

zendProject.local/页面底部的那个人说我带着同样的错误,当我尝试访问我的应用程序作为zendProject.local/

这是我得到的

在主机上(Windows / System32 / drivers / etc / hosts)文件

 127.0.0.1 blog.local 

在httpd-vhosts.conf文件中

 <VirtualHost 127.0.0.1> ServerName blog.local DocumentRoot /blog/public SetEnv APPLICATION_ENV "development" <Directory /blog/public> DirectoryIndex index.php AllowOverride All Order allow,deny Allow from all </Directory> 

你能告诉我我做错了什么吗? 浏览器仍然显示Not Found当我访问http://blog.local/时, 在此服务器上找不到请求的URL / public

我在Windows上运行WAMP。 这是“博客”项目C:\wamp\www\blog的绝对path

@编辑RiggsFolly

这是我现在在httpd-vhosts.conf文件中得到的

 <VirtualHost *:80> ServerName localhost DocumentRoot "C:/wamp/www" <Directory "C:/wamp/www"> AllowOverride All # make sure this is only allowed to be accessed by the local machine # then if/when you open one of your other sites up to the internet and somebody uses your IP # they will get directed here as its the first VH def and then receive a 403 not allowed to access Require local </Directory> </VirtualHost> <VirtualHost *:80> ServerName blog.local DocumentRoot "C:/websites/blog/public" Options Indexes FollowSymLinks SetEnv APPLICATION_ENV "development" <Directory "C:/websites/blog/public"> DirectoryIndex index.php AllowOverride All Require all granted </Directory> </VirtualHost> 

而且我按照你的build议在C:/叫做'网站'创build了一个新的目录

你需要更具体一些你的文件夹位置。 我猜这个教程是为Unix编写的,而且你正在使用windows。

对于Apache 2.2.x,请使用以下语法:

 NameVirtualHost *:80 <VirtualHost *:80> serverName blog.local DocumentRoot "C:/wamp/www/blog/public" Options Indexes FollowSymLinks SetEnv APPLICATION_ENV "development" <Directory "C:/wamp/www/blog/public"> DirectoryIndex index.php AllowOverride All Order Allow,Deny Allow from all </Directory> 

你最好避免Allow from allAllow from localhost 127.0.0.1 ::1直到你真的想允许宇宙看到你的网站。

对于Apache 2.4.x,使用以下语法:

 <VirtualHost *:80> serverName blog.local DocumentRoot "C:/wamp/www/blog/public" Options Indexes FollowSymLinks SetEnv APPLICATION_ENV "development" <Directory "C:/wamp/www/blog/public"> DirectoryIndex index.php AllowOverride All Require all granted </Directory> 

注意 Apache 2.4.x不再需要NameVirtualHost *:80

再次,你会更好地避免Require all grantedRequire all granted并使用Require local直到你真的想让宇宙看到你的网站。

EDITED经过发问者的评论:

对,这是Apache的默认设置。 如果你输入一个url,它就不能找到一个虚拟主机的定义,它会默认为你给它的第一个虚拟主机定义,这个博客就是你的情况。

好的,现在你需要为你的其他项目创建一个虚拟主机,最重要的是第一个虚拟主机必须是localhost并且只允许从本地PC访问,以获得额外的安全性。

现在我个人会利用这个机会将我的实际站点移动到\ wamp \文件夹结构之外的完全独立的文件夹结构中,因此不会混淆\ wamp \ www文件夹和其他站点的权限。

例如,创建一个文件夹c:\websites\www然后在该文件夹中为每个项目创建一个文件夹

 c:\websites\www\blog c:\websites\www\project2 

然后将您的虚拟主机指向包含站点代码的相关文件夹(如果您愿意,可以在另一个磁盘上)。 这使您可以为每个VHOSTS专门指定Apache安全性(允许访问此站点的人员)。 所以,当你想要一个客户或朋友能够玩一个网站,你只需要改变这个网站的安全性,而让他们玩。

喜欢这个:

 <VirtualHost *:80> serverName localhost DocumentRoot "C:/wamp/www" <Directory "C:/wamp/www"> AllowOverride All # make sure this is only allowed to be accessed by the local machine # then if/when you open one of your other sites up to the internet and somebody uses your IP # they will get directed here as its the first VH def and then receive a 403 not allowed to access Require local </Directory> </VirtualHost> <VirtualHost *:80> serverName blog.local DocumentRoot "C:/websites/www/blog/public" Options Indexes FollowSymLinks SetEnv APPLICATION_ENV "development" <Directory "C:/websites/www/blog/public"> DirectoryIndex index.php AllowOverride All Require all granted </Directory> </VirtualHost> <VirtualHost *:80> serverName project2.dev DocumentRoot "C:/websites/www/project2" Options Indexes FollowSymLinks <Directory "C:/websites/www/project2"> DirectoryIndex index.php AllowOverride All Require local # this site also available to other PC's on my internal network Require ip 192.168.0 </Directory> </VirtualHost> 

请记住,对于您创建的每个新的虚拟主机站点,还需要将该serverName(project2.dev)添加到主机文件。

 hosts file: 127.0.0.1 blog.local 127.0.0.1 project2.dev 

我希望这有帮助。