Apache 子域名不工作

Apache 子域名不工作

我在本地机器上运行 Apache,并尝试创建子域,但不起作用。以下是我所拥有的(精简版):

<VirtualHost *:80>
   DocumentRoot /var/www/one
   ServerName one.localhost
</VirtualHost>
<VirtualHost *:80>
   DocumentRoot /var/www/two
   ServerName two.localhost
</VirtualHost>

我最近添加了one。该two条目已经存在一段时间了,它仍然运行良好(当我转到 时显示网页two.localhost)。事实上,我复制了整个two.localhost条目并简单地更改twoone,但它不起作用。我尝试了以下每一个:

* `apachectl -k graceful`
* `apachectl -k restart`
* `/etc/init.d/apache2 restart`
* `/etc/init.d/apache2 stop && !#:0 start`

/var/www/one如果不存在,Apache 会抱怨,所以我知道它在做某物,但当我one.localhost在浏览器中访问时,浏览器抱怨那里什么都没有。我把一个index.html文件放在那里,也试着直接去one.localhost/index.html,浏览器仍然找不到它。这很令人困惑,因为我复制的条目two.localhost确切地一样。。不仅如此,如果出现问题,我希望得到 500 分,而不是浏览器无法找到任何东西。error_log也没有额外的内容。

答案1

'one.localhost' 是否在您的/etc/hosts- 验证分辨率ping one.localhost

答案2

您也有NameVirtualHost *:80指令吗?您需要它来告诉 Apache,“*:80”是基于名称的虚拟主机,而不是基于 IP 地址的虚拟主机。请在此处查看区别:http://httpd.apache.org/docs/2.2/vhosts/name-based.html

另外,您是否尝试过运行apachectl -t配置文件来执行语法检查?

答案3

您可以尝试查看服务器访问日志文件。如果您没有找到与您的源 IP 和请求的 URL 匹配的任何记录,则您无法使用此子域访问您的服务器。

您没有提到的一点是 的 DNS 名称解析。您需要在 DNS 服务器中one.localhost定义一条记录来响应 的解析请求,或者至少需要在客户端计算机(在 Windows 计算机中)上的文件中添加新条目。A / CNAMEone.localhost/etc/hostsC:\Windows\System32\drivers\etc\hosts

如果您能够访问服务器,那么很可能是配置问题。您需要查看整体配置,而不仅仅是一小部分。此外,您可能有一些重写规则/.htaccess 文件等...

相关内容