Apache主目录不存在

5
我正在尝试查找在我的Apache配置中仍存在对/var/www/html的引用。当我运行apache2ctl -S时,它显示主文档根目录:“/var/www/html”,但我的虚拟主机或主Apache配置文件都没有指向该目录。
我已尝试使用grep -r“var / www / html”/etc/apache2/搜索所有配置文件,但返回为空。
在我的/etc/apache2/apache2.conf文件中,该路径没有<Directory>条目(在其中存储虚拟主机下有一个/var/www)。
这种配置怪癖使我的强迫症感到不安,但我经常在我的Apache错误日志中看到这些条目:
[Fri Jun 28 18:19:53.424619 2019] [autoindex:error] [pid 22665] 
[client 209.222.82.167:47376] AH01276: Cannot serve directory
   /var/www/html/: No matching DirectoryIndex 
   (default.php,index.php,index.html,index.htm) found, and server-generated
   directory index forbidden by Options directive

Apache如何确定主文档根目录,我该如何更改它?
编辑:
对于我的sites-available/sites-enabled,我有四个文件,000-default.conf,000-default-le-ssl.conf,000-www-default.conf和000-www-default-le-ssl.conf。000-default.conf是由certbot设置的重定向到https站点,并且没有DocumentRoot指令。000-www-default.conf与000-default.conf相同,但ServerName不同(一个带www,一个没有);000-www-default-le.conf和000-default-le.conf也是如此。
以下是我尝试过的一些内容的输出:

请检查 apachectl -V 命令以确认您正在查看的配置文件是否正确。 - Nic3500
我编辑了问题,包含了 apachectl -V-S 的输出。 - ke4ukz
2
/var/www/html是它编译时的值,因此它是默认值。您无法更改它。如果将DocumentRoot设置为另一个值,则会使用该值。 - Nic3500
@Nic3500,看起来你可能有所发现。我检查了我拥有的其他三个Apache服务器,它们都没有使用/var/www/html,所有这些服务器都已经按虚拟主机配置了documentroot,并且apache2ctl -S显示它是它们所有服务器的主要documentroot。 - ke4ukz
那么这个问题还没有解决吗? - Mr Rebel
3个回答

6
正如@Nic3500指出的那样,/var/www/html是主要DocumentRoot的默认值。更改虚拟主机配置不会影响此设置。但是,在apache.conf中添加DocumentRoot指令会更改它,并在apache2ctl -S输出中反映出来。
换句话说,我的主要DocumentRoot未配置,直到我在全局配置文件中明确定义它。

未解决的问题... - Mr Rebel
这个apache.conf在哪里? - sander

1
在Debian/Ubuntu中,默认的虚拟主机文件:/etc/apache2/sites-available/000-default.conf 的DocumentRoot为/var/www/html。 我认为由apache2ctl -S报告的主 DocumentRoot与默认的 DocumentRoot相同。默认的 DocumentRoot 要么在 /etc/apache2/apache2.conf 中定义,要么在 /etc/apache2/sites-available/000-default.conf 中定义。这在如何在Linux中更改默认的Apache 'DocumentRoot'目录中有描述。所以要更改主 DocumentRoot,您需要编辑 /etc/apache2/sites-available/000-default.conf

我已经编辑了我的问题,并提供了有关我的配置文件的更多信息。在这种情况下,它没有设置在000-default.conf中,而且我的任何conf文件中都没有引用该目录。 - ke4ukz
要查找配置为使用DocumentRoot:/var/www/html的虚拟主机,请运行以下命令:grep "/var/www/html" /etc/apache2 -R - Nadir Latif
我已经尝试过了,但没有返回任何结果;我在整个磁盘驱动器上使用grep搜索该字符串,但它并未出现在任何Apache配置文件中。 - ke4ukz

0

DocumentRoot指令在Apache的文档中明确说明了其默认值:

默认值:DocumentRoot "/usr/local/apache/htdocs"

Default表示当没有任何地方指定时,Apache给出的值:

如果该指令有一个默认值(即,如果您完全省略它在您的配置中,则Apache Web服务器将表现得好像您将其设置为特定值

是的,我知道/usr/local/apache/htdocs与您的值/var/www/html不同,但这只是一个取决于构建Apache的Linux发行版的小细节。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接