如何禁用 Apache 中的默认文档根目录?

dan*_*jar 14 security httpd.conf documentroot apache-2.2

我在运行 Apache Httpd 的服务器上托管了一些网站。每个网站都有自己的域或子域和虚拟主机。因此,我不需要默认的文档根目录。是否有可能禁用DocumentRoot/etc/httpd/conf/httpd.conf

dan*_*jar 10

感谢其他答案。我通过添加一个没有任何权限的默认虚拟主机来解决它。globalDocumentRootServerNameoptions 必须与虚拟主机中指定的匹配。

/etc/httpd/conf/httpd.conf

...
ServerName <server-ip>:80

DocumentRoot "/var/www/html"

<Directory />
    Order Deny,Allow
    Deny from all
    Options None
    AllowOverride None
</Directory>
...
Run Code Online (Sandbox Code Playgroud)

/etc/httpd/conf.d/default.conf

<VirtualHost *:80>
        ServerName <server-ip>
        DocumentRoot /var/www/html
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

这样,当服务器直接通过它的ip访问时,我会收到403 Forbidden消息,这正是我想要的。如果我不需要/var/www/html一个现有的目录会更好,但是如果我指定类似的东西,Apache 会抱怨/dev/null


HBr*_*ijn 8

是和否。

您可以注释掉或删除DocumentRoot指令,没问题。但这并没有多大作用,因为它会默认为PREFIX/htdocs/您构建 apache 时设置 PREFIX的默认目录。

当您设置 VirtualHosts 时,所有未由显式配置的虚拟主机处理的请求都会由默认虚拟主机处理(通常是第一个,但httpd -S会告诉您)。


use*_*517 5

我不确定你想这样做。如果 apache 配置中没有默认 vhost,则第一个定义的 vhost 将成为默认.

您真正需要做的就是让默认服务提供一个空白页面。