我使用 Debian 7,并按照本教程安装了地址为 sub.domain.com 的虚拟主机:http://www.debian-administration.org/articles/412
我已启用它,重新启动电脑,但子域仍然打开 /var/www
以下是名为“sub.domain.com”的文件的内容,该文件位于 /etc/apache2/sites-available/ :
<VirtualHost *>
ServerName sub.domain.com
DocumentRoot /usr/share/destfolder
ServerAdmin [email protected]
ErrorLog /var/log/apache2/sub.domain.com-error_log
CustomLog /var/log/apache2/sub.domain.com-access_log common
</VirtualHost>
顺便说一句,当我重新加载 apache 的配置时,我得到:
NameVirtualHost *:80 has no VirtualHosts
有什么建议么?
答案1
仅链接教程不足以提供足够的信息,最好发布您的配置文件。/var/www
打开虚拟主机地址时最终遇到的情况可能有更多原因。
Apache 配置文件的构建方式是在没有上下文的情况下,指令全局应用。否则它们仅适用于上下文。虚拟default
主机*
按照默认设置的方式完成。如果没有这样的虚拟主机,则解析配置时遇到的第一个虚拟主机将被视为默认主机。
现在,最后,给出可能的答案:
1)在您的虚拟主机中,您尚未设置 DocumentRoot 指令,并且(可能是默认的)全局 DocumentRoot 指向/var/www
.
2) 您的虚拟主机没有按照您期望的方式工作。当您命名错误时,有时会发生这种情况。启用LogLevel debug
调试日志记录并观察当您打开所需地址时会发生什么以及调用哪个虚拟主机。 Debian 上的日志文件位于(不是 100% 确定)/var/log/apache2/
。
发布您的配置文件和调试消息,可以大大增加获得有用建议的机会。
更新:
看来您打开了基于名称的虚拟主机。基本上你的配置看起来很合理。在该<VirtualHost ...>
子句中,您应该指定目标端口<VirtualHost *:443>
等。
指令DocumentRoot
和ServerName
都在这里,就可以了。当您请求该页面时,您的虚拟主机可能不会被调用。
这可能是因为 Apache 不知道该 IP 指向什么sub.domain.com
。你有sub.domian.com
DNS 或至少在主机文件中吗?
有关基于名称的虚拟主机的更多信息:http://httpd.apache.org/docs/2.2/vhosts/name-based.html