我正在尝试在我的Apache配置中找到对/var/www/html
的引用。当我运行apache2ctl -S
时,它显示为Main DocumentRoot: "/var/www/html"
,但是我的虚拟主机或主Apache配置文件都没有指向该目录。
我尝试使用grep -r "var/www/html" /etc/apache2/
搜索所有配置文件,但未返回任何内容。
在我的<Directory>
文件中,该路径没有/etc/apache2/apache2.conf
条目(/var/www
有一个条目,用于存储虚拟主机)。
此配置怪癖困扰着我的OCD,但我也经常在我的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如何确定主要documentroot,以及如何更改它?
编辑:
对于我的可用站点/启用站点,我有四个文件,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
遵循相同的模式。
这是我尝试过的一些事情的输出:
apache2ctl -V
:https://pastebin.com/R4ykihLv apache2ctl -S
:https://pastebin.com/JaEGQLgS $ sudo grep -r "/var/www/html" /
(部分,我将近五个小时将其停止):https://pastebin.com/9iJyAH9J 答案 0 :(得分:0)
在Debian / Ubuntu中,默认虚拟主机文件 /etc/apache2/sites-available/000-default.conf 具有DocumentRoot / var / www / html >。
我认为 apache2ctl -S 报告的Main DocumentRoot与默认DocumentRoot相同。默认的DocumentRoot在 /etc/apache2/apache2.conf 中定义,或者在 /etc/apache2/sites-available/000-default.conf 中定义。 How to Change Default Apache ‘DocumentRoot’ Directory in Linux中对此进行了描述。因此,要更改主DocumentRoot,您将需要编辑 /etc/apache2/sites-available/000-default.conf 。
答案 1 :(得分:0)
正如@ Nic3500所指出的,/var/www/html
是主DocumentRoot的默认值。更改虚拟主机配置不会对此产生影响。但是,向apache.conf
添加DocumentRoot指令的确会更改它,这反映在apache2ctl -S
的输出中。
换句话说,我的主DocumentRoot未配置,并且使用默认值,直到我在全局配置文件中明确定义它为止。
答案 2 :(得分:0)
DocumentRoot 指令Apache的文档清楚了其默认值:
默认:DocumentRoot“ / usr / local / apache / htdocs”
和 Default 表示当未在任何地方指定任何人时,Apache给出的值:
如果该指令具有默认值(即,如果您从 完全配置后, Apache Web服务器的行为就像 您将其设置为特定值)
是的,我知道 / usr / local / apache / htdocs 与您的值 / var / www / html 不同,但这只是一个小细节,具体取决于在建立Apache的Linux发行版上。