我在Mac OSX上使用Zend Server CE 5.6.0。
我的httpd.conf
有以下行,添加了虚拟主机文件:
Include conf/extra/httpd-vhosts.conf
在该档案中,我有以下内容:
NameVirtualHost *:80
<VirtualHost *:80>
ServerName localtextil.drupal.lh
DocumentRoot /usr/local/zend/apache2/htdocs/Obiz/LocalTextil-Portal/drupal
</VirtualHost>
因此,根据定义,当我尝试访问localtextil.drupal.lh
时,它应该将我重定向到其文档根目录。
问题是,当我尝试访问该主机时,出现错误。
当我只是访问localhost
时,我会转到/usr/local/zend/apache2/htdocs/Obiz/LocalTextil-Portal/drupal
上的网站。
我在这里做错了什么?
答案 0 :(得分:0)
两件事 - 首先是虚拟主机定义(据我所知)覆盖目录和服务器名之间的apache映射。第一个定义的虚拟主机是apache在找不到地图时将默认使用的 - 所以它应该是一个通用的设置(反映你的原始域名,在你的情况下,localhost),然后是你的特定设置。
其次,如果您的文件夹位于您已授予apache读取权限的位置之外,则可能会出现错误。目录权限由DocumentRoot指令设置 - 但是:
现在,当请求到达时,服务器将首先检查它是否使用与NameVirtualHost匹配的IP地址。如果是,那么 它将查看具有匹配IP地址的每个部分 并尝试找到ServerName或ServerAlias匹配的地方 请求主机名。如果找到一个,则使用配置 对于那台服务器。如果找不到匹配的虚拟主机,那么第一个 将使用列出的与IP地址匹配的虚拟主机。
因此,第一个列出的虚拟主机是默认虚拟主机 主办。来自主服务器的DocumentRoot永远不会被使用 IP地址与NameVirtualHost指令匹配。如果你愿意的话 对任何不匹配的请求都有特殊配置 特定的虚拟主机,只需将该配置放入 容器并在配置文件中首先列出它。
基于名称的虚拟主机的Apache文档页面是here,它应该有助于提供一些想法。基本上你需要查看你对DocumentRoot和服务器名的定义,并通过它们确保它们都是&#34; ok&#34;。