documentroot必须使用绝对路径,如“/var/www/html”或“c:/xampp/htdocs”,不可用相对路径;需确保目录真实存在、权限正确(如chown www-data:www-data)、末尾无斜杠,并配套含require all granted的directory块。

DocumentRoot 必须写绝对路径,不能用 htdocs、./myapp 或 ../public 这类相对写法——Apache 启动时不会根据配置文件位置去“推算”路径,而是直接按字面解释,找不到就报错或静默回退到默认目录。
绝对路径怎么写才对
开头必须是根目录 /(Linux/macOS)或盘符(Windows),且末尾不能加斜杠:
- ✅ 正确:
DocumentRoot "/var/www/html"(Ubuntu/Debian) - ✅ 正确:
DocumentRoot "/var/www/example.com"(自定义站点) - ✅ 正确:
DocumentRoot "C:/xampp/htdocs"(Windows XAMPP) - ❌ 错误:
DocumentRoot "htdocs"(相对路径,无效) - ❌ 错误:
DocumentRoot "/var/www/html/"(末尾斜杠,易引发路径拼接问题)
路径要真实存在且可访问
光写对还不够,目标目录得真正存在,且 Apache 进程能读取:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 用
ls -ld /var/www/html检查目录是否存在 - 属主建议设为 Web 服务用户:Ubuntu/Debian 用
www-data,CentOS/RHEL 用apache - 执行命令授权(以 Ubuntu 为例):
sudo chown -R www-data:www-data /var/www/html - 权限建议设为
755(目录)、644(文件)
配套的 授权不能少
只设 DocumentRoot 不会自动开放访问,必须显式声明该目录的权限:
- 路径必须和 DocumentRoot 完全一致(包括无尾斜杠)
- Apache 2.4+ 必须包含
Require all granted - 示例配置:
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
多站点或多目录别用 DocumentRoot “嵌套”
DocumentRoot 是静态锚点,不参与路径计算。想实现子目录映射,不要改 DocumentRoot,而是用:
-
Alias指令映射 URL 到其他物理路径(如Alias /api "/opt/myapi") - 为不同域名建独立
<virtualhost></virtualhost>,每个配自己的 DocumentRoot - 不要在一个 VirtualHost 里试图配多个 DocumentRoot——Apache 不支持










