问题
我需要为VirtualHost
已在 Mac 上安装的 MAMP 服务器设置一些记录。简而言之,http://localhost:8888/dkbtherapy/index.html
我想使用 而不是 使用http://l.dkbtherapy.com
。但是,我所做的配置不起作用。
VirtualHost 配置
在/Applications/MAMP/conf/Apache
文件夹中我修改了httpd.conf
文件并添加了以下VirtualHost
配置:
<VirtualHost *:8888>
DocumentRoot /Applications/MAMP/htdocs/dkbtherapy
ServerName l.dkbtherapy.com
</VirtualHost>
所以应该为其设置路由(我想)。然后我修改了我的hosts
文件并添加了以下内容:
127.0.0.1:8888 l.dkbtherapy.com
但是当我在 Safari 中输入时,l.dkbtherapy.com
我得到:
Safari 找不到服务器。
现在,我在进行更改后重新启动了 Apache 服务器,但我还没有重新启动 Mac。虽然我认为我不需要重新启动 Mac。我在上面的配置中遗漏了什么?
笔记:进行更改后http://localhost:8888/dkbtherapy/index.html
现在也不起作用,我收到一条404
返回消息:
该服务器上未找到所请求的 URL /dkbtherapy/index.php。
编辑:在查看了我的 Windows 机器后,我发现它已经配置好了,并且能够正常工作,于是我注意到出现了一行配置信息,因此我也将它添加到了 Mac 上的配置信息中:
NameVirtualHost *:8888
编辑相关内容http://localhost:8888/dkbtherapy/index.html
:当我查看 Apache 的错误日志时,当我尝试导航到该路径时,我看到此错误:
[2013 年 5 月 31 日星期五 11:23:41] [错误] [客户端 ::1] 文件不存在:/Applications/MAMP/htdocs/dkbtherapy/dkbtherapy
因此出于某种原因,它认为这dkbtherapy
是服务器的绝对根它出现-我如何做到的?
答案1
好吧,您已经将其定义/Applications/MAMP/htdocs/dkbtherapy
为虚拟主机的 DocumentRoot,这意味着该目录映射到 URL——127.0.0.1:8888/
因此当您访问时127.0.0.1:8888/dkbtherapy/index.html
,Apache 会将其映射到/Applications/MAMP/htdocs/dkbtherapy/dkbtherapy/index.html
不存在的,因此您会在日志中看到错误。
您有两个选择。一个是将 DocumentRoot 值更改为/Applications/MAMP/htdocs/
,这将使.../dkbtherapy
URL 指向您想要的位置。
另一个选择,也是我认为更可取的选择,就是简单地删除/dkbtherapy
您的 URL,然后访问 eg http://127.0.0.1:8888/index.html
。(我说这是可取的,因为该网站在生产时很可能会有自己的域名,并且其 URL 不需要包含/dkbtherapy/
。如果是这样,并且考虑到开发环境总是尽可能接近生产环境,那么第二个选项更接近产生该结果,因此比第一个选项更好。)
关于您的文件还有一点需要注意/etc/hosts
:您无法在该文件中指定端口号,只能指定 IP 地址。出现“未找到主机”错误是因为 TCP 堆栈无法解析该条目,因此会忽略它。以下方法有效:
127.0.0.1 l.dkbtherapy.com
完成上述更改以及前面描述的对 DocumentRoot 的更改后,http://l.dkbtherapy.com:8888
应该可以到达您网站的索引页。
(此外,除非您实际使用基于名称的虚拟主机,否则您可能不需要 NameVirtualHost 行,但现在听起来情况并非如此。在您实际设置基于名称的虚拟主机之前,将其保留在那里可能不会有任何损害,但删除它也不会对 Apache 的行为产生影响。)
答案2
对于将来访问此页面的人:
:8888
从您的 URL 中删除的第一步是编辑/Applications/MAMP/conf/apache/httpd.conf
并将Listen
指令更改为Listen 80
。
要设置VirtualHost
,仍然在上面的同一文件中,搜索Include /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf
,确保它没有被注释掉,即删除#
它前面的 (如果有)。然后转到文件/Applications/MAMP/conf/apache/extra/httpd-vhosts.conf
以设置您的虚拟主机。