我尝试在Apache中定义多个虚拟主机时遇到了一个奇怪的问题。 这是我的httpd.conf文件的代码:
<VirtualHost *:8888> ServerName site1.local DocumentRoot /Applications/MAMP/htdocs/site1/public <Directory /Applications/MAMP/htdocs/site1/public> DirectoryIndex index.php AllowOverride All Order allow,deny Allow from all </Directory> </VirtualHost> <VirtualHost *:8888> ServerName site2.local DocumentRoot /Applications/MAMP/htdocs/site2/public <Directory /Applications/MAMP/htdocs/site2/public> DirectoryIndex index.php AllowOverride All Order allow,deny Allow from all </Directory> </VirtualHost>
当我尝试在浏览器中访问“site2.local”时,我被redirect到“site1.local”。 这将发生在我在httpd.conf文件中插入的所有VirtualHost定义中。 当我想要访问“site2.local”或任何其他的,我需要把它的VirtualHost定义在顶部(作为第一个)。 所以,我认为Apache只能正确执行第一个VirtualHost。
另外,还有一个问题:如果我尝试访问我的htdocs文件夹中没有在VirtualHost中定义的任何项目文件,我将收到一条消息“禁止访问,您没有权限访问/项目/在此服务器上”。 如果我想访问这些项目中的任何一个,我需要删除httpd.conf文件中的所有VirtualHost定义。
我做错了什么?
在我的情况下,这些(在VirtualHost中定义)是PHP项目与Zend Framework。 我正在使用MacOSX。
谢谢
你错过了
NameVirtualHost *:8888
和
<VirtualHost _default_:8888> DocumentRoot /www/default </VirtualHost>
有关apache默认虚拟主机的更多信息,可以阅读这个在线文档
http://httpd.apache.org/docs/2.2/vhosts/examples.html