DocumentRoot 指令在 httpd.conf 中指定 Apache 默认网页根路径,须用绝对路径、末尾不加斜杠、真实存在且有读取权限,并需配套 <Directory> 块授权访问,多站点应使用 VirtualHost 分别配置。

主目录在 httpd.conf 中由 DocumentRoot 指令指定,它定义了 Apache 响应 HTTP 请求时默认查找网页文件的根路径。配错会导致 403 Forbidden 或 404 Not Found 错误。
DocumentRoot 的基本写法
语法很简单:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
-
必须使用绝对路径(Linux/macOS 如
/var/www/html,Windows 如C:/xampp/htdocs) - 路径末尾不要加斜杠(
/var/www/html/❌,应写为/var/www/html✅) - 路径需真实存在,且 Apache 进程(如
www-data或apache用户)有读取权限
配套的 Directory 权限配置不能少
仅设 DocumentRoot 不够,还必须用 <Directory> 块明确允许该目录被访问,否则默认拒绝:
<Directory "/var/www/html">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
注意:
– 路径要和 DocumentRoot 完全一致(包括引号和大小写)
– Apache 2.4+ 使用 Require all granted,旧版(2.2)用 Order allow,deny + Allow from all
常见错误与检查点
-
路径不存在或拼写错误:运行
ls -ld /var/www/html(Linux)或确认 Windows 路径是否可访问 -
SELinux 或防火墙拦截(仅 Linux):临时关闭 SELinux 测试,或执行
setsebool -P httpd_read_content 1 -
DocumentRoot 和 Directory 路径不一致:比如一个写
/var/www,另一个写/var/www/html,会直接拒绝访问 -
没重启服务:修改后必须执行
systemctl restart httpd(RHEL/CentOS)或sudo apachectl restart(macOS)
多站点场景下的处理
如果要用多个网站,不建议直接改主 DocumentRoot。更稳妥的做法是:
– 保留主配置中的 DocumentRoot 作为兜底(如 /var/www/default)
– 在 VirtualHost 块中为每个域名单独设置 DocumentRoot,例如:
<VirtualHost *:80>
ServerName site1.example.com
DocumentRoot "/var/www/site1"
<Directory "/var/www/site1">
Require all granted
</Directory>
</VirtualHost>
这样主目录只起默认作用,各站点互不影响。

















