Apache 2.2 localhost VirtualHosts 问题

Apache 2.2 localhost VirtualHosts 问题

我正在尝试使用虚拟主机设置我的开发机器,以便我可以使用一个简单的 url 访问我的开发项目,例如 http://project.dev/,而不是整个 http://127.0.0.1/dev/path/to/root/of/project/ 类型的 url。

现在,我知道关于这个问题已经有很多教程和问题得到解答,但是在尝试了许多之后,我感觉自己在这里兜圈子。

问题很简单:设置我的主机文件和虚拟主机后,任何访问虚拟主机的尝试都会不可挽回地显示我的服务器 DocumentRoot 的内容。

我的主机文件:

127.0.0.1       localhost
127.0.0.1       mydomain.dev
255.255.255.255 broadcasthost
::1             localhost
fe80::1%lo0     localhost

我的 httpd-vhosts.conf

NameVirtualHost *:80

<VirtualHost *:80>
    ServerName localhost
    DocumentRoot /Users/pilot/Sites/
</Virtualhost>

<VirtualHost *:80>
    ServerName mydomain.dev
    DocumentRoot /Users/pilot/Sites/devel/vytamin/dev/
</VirtualHost>

我明确指出 httpd-vhosts.conf 文件已加载到我的 httpd.conf 中,并且如果我将虚拟主机文档根目录指向错误的文件夹,我会收到警告。

我尝试将 localhost 虚拟主机设置为以下内容,但没有任何成功。

<VirtualHost *:80>
    ServerName localhost
    DocumentRoot /Users/pilot/Sites/devel
</Virtualhost>

以下 URL 全部显示我在 httpd.conf 文件中定义的服务器的 DocumentRoot,并且似乎忽略了我在 VirtualHosts 中定义的 DocumentRoot。

http:// 127.0.0.1/
http:// localhost/
http:// mydomain.dev/

我在 Mac OSX 10.5 Leopard 上运行 Apache2.2,但不是随 mac os 一起提供的版本。我在 /usr/local/apache2 下编译了自己的版本,并且禁用了 Web 共享

我觉得我的设置没什么问题,所以我希望社区也能发现!谢谢你们的帮助!

答案1

这听起来可能过于简单,但是在进行这些更改后您是否重新启动了 Apache?

编辑:另外,是 mydomain 还是 mydomain.dev?你似乎在两者之间来回切换。

答案2

好的,我找到问题了!

上面的配置完全没问题,只是我的 apache 没有正确重启。apache_ctl graceful或者apache_ctl restart都没有终止我正在运行的所有 httpd 进程,因此无法正确重新加载配置文件中的更改。一旦我杀死剩余的进程,真的重新启动 apache,它起作用了......

解决了,但是发现这一点我感觉很愚蠢!

现在我有一个守护进程的情况需要解决!

答案3

您是否已验证 apache NameVirtualHost 指令是否已正确设置(并且未注释掉)?此步骤对于任何基于名称的虚拟主机正常运行都是必需的。

这里还有一些关于该主题的信息。

相关内容