Apache 忽略文档根目录

Posted

技术标签:

【中文标题】Apache 忽略文档根目录【英文标题】:Apache ignores Document root 【发布时间】:2015-01-28 21:45:42 【问题描述】:

我有以下虚拟主机文件:

 <VirtualHost *:80>

        ServerName www.domain.com
        ServerAlias domain.com

        ServerAdmin michael@xxx.com
        DocumentRoot /var/www/html/xxx/public

        ErrorLog $APACHE_LOG_DIR/error.log
        CustomLog $APACHE_LOG_DIR/access.log combined


</VirtualHost>

Apache 似乎忽略了我的Document Root,而是向我显示了一个位于

中的文件
/var/www/html

目录。为了让它运行,我需要做些什么改变吗?

【问题讨论】:

【参考方案1】:

您确定这是端口 80 上唯一的虚拟主机吗?我怀疑另一个地方会覆盖它。

此外,该目录没有指令,因此当您运行时可能会遇到权限问题。

我经常发现其他虚拟主机隐藏在 apache.conf 之类的东西中。

您也知道站点文件有两个位置吗?站点可用和站点启用。如果它不在启用站点中,它将什么也不做。使用sudo a2ensite siteName 在启用站点的文件中创建一个simlink。

此外,如果您使用的是 Apache 2.4,则文件需要以 .conf 结尾才能被拾取。事情从 2.2 到 2.4 发生了一些变化。

【讨论】:

感谢您的回答 +1!也就是说,该文件以 .conf 结尾,并且已经通过 a2ensite simlinked 链接到启用站点。这是一个全新安装的服务器,所以我认为没有其他虚拟主机设置(我没有这样做,而且我是这台服务器上唯一的一个。)你还能想象其他什么吗? 目录指令的要点对我来说似乎很有希望。设置它们的方法是什么? 您应该有一个定义为此处指定的目录httpd.apache.org/docs/2.4/mod/core.html#directory。设置安全性也是值得的,因此如果您希望所有人都可以访问“要求所有权限”。我通常把它放在文档根目录下的虚拟主机中。 但是你们很多人想为 .80 grep conf 文件,必须指定另一个虚拟主机。 grep -R 80 /etc/apache2/* 目录指令成功了,现在它可以工作了。非常感谢!【参考方案2】:

在花了 30 多分钟试图弄清楚为什么某些东西被忽略后,如果 apache2.4 不以 .conf 结尾,则似乎 apache2.4 会忽略您启用站点的配置:

错误:

ls /etc/apache2/sites-enabled/
001-owncloud  002-owncloud-ssl  003-ram

正确:

ls /etc/apache2/sites-enabled/
001-owncloud.conf  002-owncloud-ssl.conf  003-ram.conf

【讨论】:

我不敢相信这没有得到更多的支持。谢谢。

以上是关于Apache 忽略文档根目录的主要内容,如果未能解决你的问题,请参考以下文章

Apache 重写目录索引

Apache 文档根目录之外的文件

Apache vhost 解析为 localhost 文档根目录

Apache 虚拟主机重定向到文档根目录

Apache Virtual Host重定向到文档根目录

无法在 apache 上修改文档根目录的值 - 不断获取 /var/www [关闭]