1

我在 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.

我在这里做错了什么?

4

1 回答 1

0

两件事 - 首先是虚拟主机定义(据我所知)覆盖了 apache 在目录和服务器名之间的映射。第一个定义的虚拟主机是 apache 在找不到地图时将使用的默认值 - 所以它应该是一个通用设置(反映你的原始域名,在你的情况下是 localhost),然后是你的特定设置。

其次,如果您的文件夹不在您授予 apache 读取权限的位置,那么您可能会收到错误消息。目录权限由 DocumentRoot 指令设置 - 但是:

现在,当请求到达时,服务器将首先检查它是否使用与 NameVirtualHost 匹配的 IP 地址。如果是,那么它将查看具有匹配 IP 地址的每个部分,并尝试找到 ServerName 或 ServerAlias 与请求的主机名匹配的部分。如果找到,则使用该服务器的配置。如果未找到匹配的虚拟主机,则将使用与 IP 地址匹配的第一个列出的虚拟主机。

因此,第一个列出的虚拟主机是默认虚拟主机。当 IP 地址与 NameVirtualHost 指令匹配时,将永远不会使用来自主服务器的 DocumentRoot。如果您想对与任何特定虚拟主机不匹配的请求进行特殊配置,只需将该配置放在容器中并首先在配置文件中列出。

关于基于名称的虚拟主机的 Apache 文档页面在这里,它应该有助于提供一些想法。基本上,您需要查看 DocumentRoot 和服务器名称的定义,并检查它们以确保它们都“正常”。

于 2012-05-08T14:54:52.497 回答