我有各种虚拟主机用于我的 Web 开发工作,包括
cnm.这
sites-available/cnm
我的文件说得很简单:
<VirtualHost *:80>
ServerName cnm
DocumentRoot /var/www/cnm/public_html
</VirtualHost>
我升级到 Ubuntu 13.10,当我将浏览器指向 cnm/时,我看到
/var/www/index.html 似乎在默认文件中指示的文件
sites-available/000-default.conf
其中说(除其他外):
<VirtualHost *:80>
DocumentRoot /var/www
当我浏览到 cnm/时,我需要做什么才能让 Apache 读取我的 cnm 文档根目录?
笔记:
a2ensite cnm
启用它和 service apache2 reload
.这是一件好事,但它不会改变任何事情。 <VirtualHost *:80>
至<VirtualHost cnm.localhost>
或至<VirtualHost cnm>
.那什么也没做。 最佳答案
Ubuntu 13.10 使用 apache 2.4 ,你应该检查你所有的 apache 配置。但是对于本例,您应该注意 a2ensite
和 a2dissite
如果文件不以 .conf
结尾,命令将无法在/etc/apache2/sites-available 中看到您的文件,所以将其重命名为 sites-available/cnm.conf
并运行 a2ensite cnm
.
那么使用 *:80
你的虚拟主机定义肯定更好。 ,这意味着该虚拟主机已为端口 80 上的所有 IP 接口(interface)(*
)激活。cnm.localhost
或 cnm
这里不是有效值,只有 IP 号(您的 apache 服务器的 IP)或 *
所有人,还有一个端口号。
然后检查你的配置是如何被 apache 读取的,运行这些命令:
# load apache env
# be careful, there is a dot and a space
. /etc/apache2/envvars
# Check apache Virtualhosts config
apache2 -S
你应该得到类似的东西:
VirtualHost configuration:
*:80 is a NameVirtualHost
default server something (/etc/apache2/sites-enabled/000-default.conf:1)
port 80 namevhost something (/etc/apache2/sites-enabled/000-default.conf:1)
port 80 namevhost cnm (/etc/apache2/sites-enabled/cnm.conf:4)
如果没问题,并且您的主机文件中有正确的 Ip 用于
cnm
,您可以使用 ping 进行测试,然后使用 http://cnm/
应该使用 中具有 cnm 的虚拟主机服务器名 .如果您从默认 Virtualhost 得到答案,则意味着 apache 未在该 IP/端口可用的 ServerName 和 ServerAlias 列表中找到 Host header 中使用的名称,并回退到默认 Virtualhost。如果您真的卡住了(并且您没有忘记重新启动),您可以随时删除默认的虚拟主机并只保留您正在处理的虚拟主机。
关于Apache 升级到 Ubuntu 13.10 后不使用 DocumentRoot(使用显示 "It works!"的默认页面),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19841609/