我正在尝试使用虚拟主机设置我的开发机器,以便我可以使用一个简单的 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 指令是否已正确设置(并且未注释掉)?此步骤对于任何基于名称的虚拟主机正常运行都是必需的。
这里还有一些关于该主题的信息。