我在尝试在 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”时,我被重定向到“site1.local”。这会发生在我插入到 httpd.conf 文件下面的所有 VirtualHost 定义上。当我想访问“site2.local”或任何其他内容时,我需要将其 VirtualHost 定义放在顶部(作为第一个)。因此,我假设 Apache 仅正确执行第一个 VirtualHost。
另外,还有一个问题:如果我尝试访问 htdocs 文件夹中未在 VirtualHost 中定义的任何项目文件,我将收到一条消息“禁止访问,您无权访问此服务器上的 /project/。” 如果我想访问这些项目中的任何一个,我需要删除 httpd.conf 文件中的所有 VirtualHost 定义。
我做错了什么?
就我而言,这些(在 VirtualHost 中定义)是使用 Zend Framework 的 PHP 项目。我使用的是 MacOSX。
谢谢
答案1
你失踪了
NameVirtualHost *:8888
和
<VirtualHost _default_:8888>
DocumentRoot /www/default
</VirtualHost>
有关 apache 默认虚拟主机的更多信息,您可以阅读此在线文档
http://httpd.apache.org/docs/2.2/vhosts/examples.html