【问题标题】:Apache ignores Document rootApache 忽略文档根目录
【发布时间】: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

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

【问题讨论】:

    标签: apache ubuntu configuration virtualhost


    【解决方案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
    

    【讨论】:

    • 我不敢相信这没有得到更多的支持。谢谢。
    猜你喜欢
    • 2016-06-21
    • 2012-02-21
    • 1970-01-01
    • 1970-01-01
    • 2014-02-19
    • 2014-07-24
    • 2016-04-17
    • 2013-04-28
    • 2012-05-03
    相关资源
    最近更新 更多