Apache Main DocumentRoot 不存在
Apache Main DocumentRoot doesn't exist
我试图找到对 /var/www/html
的引用仍然存在于我的 Apache 配置中的位置。当我 运行 apache2ctl -S
它说 Main DocumentRoot: "/var/www/html"
,但是我的虚拟主机或我的主要 Apache 配置文件的 none 指向那个目录。
我已经尝试使用 grep -r "var/www/html" /etc/apache2/
搜索所有配置文件,但 returns 什么都没有。
我的 /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
.
遵循相同的模式
这是我尝试过的一些东西的输出:
apache2ctl -V
: https://pastebin.com/R4ykihLv
apache2ctl -S
: https://pastebin.com/JaEGQLgS
$ sudo grep -r "/var/www/html" /
(部分,差不多5小时后停了):https://pastebin.com/9iJyAH9J
在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 中对此进行了描述。因此,要更改 Main DocumentRoot,您需要编辑 /etc/apache2/sites-available/000-default.conf.
正如@Nic3500 所指出的,/var/www/html
是主 DocumentRoot 的默认值。更改虚拟主机配置 不会 对此产生影响。但是,将 DocumentRoot 指令添加到 apache.conf
确实会改变它,如 apache2ctl -S
.
的输出所示
换句话说,我的主要 DocumentRoot 是未配置的,一直使用默认值,直到我在全局配置文件中明确定义它。
DocumentRoot 指令 Apache 的文档清楚地说明了它的默认值:
Default: DocumentRoot "/usr/local/apache/htdocs"
和Default表示没有指定任何地方时Apache给出的值:
If the directive has a default value (i.e., if you omit it from your
configuration entirely, the Apache Web server will behave as though
you set it to a particular value)
是的,我知道 /usr/local/apache/htdocs 与您的值 /var/www/html 不同,但这只是取决于构建 Apache 的 linux 发行版的次要细节。
我试图找到对 /var/www/html
的引用仍然存在于我的 Apache 配置中的位置。当我 运行 apache2ctl -S
它说 Main DocumentRoot: "/var/www/html"
,但是我的虚拟主机或我的主要 Apache 配置文件的 none 指向那个目录。
我已经尝试使用 grep -r "var/www/html" /etc/apache2/
搜索所有配置文件,但 returns 什么都没有。
我的 /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
.
这是我尝试过的一些东西的输出:
apache2ctl -V
: https://pastebin.com/R4ykihLvapache2ctl -S
: https://pastebin.com/JaEGQLgS$ sudo grep -r "/var/www/html" /
(部分,差不多5小时后停了):https://pastebin.com/9iJyAH9J
在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 中对此进行了描述。因此,要更改 Main DocumentRoot,您需要编辑 /etc/apache2/sites-available/000-default.conf.
正如@Nic3500 所指出的,/var/www/html
是主 DocumentRoot 的默认值。更改虚拟主机配置 不会 对此产生影响。但是,将 DocumentRoot 指令添加到 apache.conf
确实会改变它,如 apache2ctl -S
.
换句话说,我的主要 DocumentRoot 是未配置的,一直使用默认值,直到我在全局配置文件中明确定义它。
DocumentRoot 指令 Apache 的文档清楚地说明了它的默认值:
Default: DocumentRoot "/usr/local/apache/htdocs"
和Default表示没有指定任何地方时Apache给出的值:
If the directive has a default value (i.e., if you omit it from your configuration entirely, the Apache Web server will behave as though you set it to a particular value)
是的,我知道 /usr/local/apache/htdocs 与您的值 /var/www/html 不同,但这只是取决于构建 Apache 的 linux 发行版的次要细节。