我正在学习这个教程来学习如何使用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 all
和Allow 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 granted
的Require 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
我希望这有帮助。