DocumentRoot 是网站根目录,按路径拼接处理请求;Alias 是独立映射,直接替换URL前缀并忽略DocumentRoot。两者共存时Alias优先匹配,目标路径可完全脱离DocumentRoot目录树。

DocumentRoot 是网站的“起点”,所有未被其他规则覆盖的请求,都从它指定的目录开始向下拼接路径;Alias 则是“直接跳转”,它把 URL 路径整体映射到一个物理位置,不依赖 DocumentRoot,也不参与其路径拼接逻辑。
DocumentRoot 的路径拼接方式
当用户访问 example.com/css/style.css,而 DocumentRoot 设为 /var/www/site,Apache 会把 URL 中的 /css/style.css 直接拼接到 DocumentRoot 后面,形成完整路径:/var/www/site/css/style.css。这个过程是线性、层级式的,且仅对未被 Alias 或其他重写规则捕获的请求生效。
- 路径拼接只发生在 DocumentRoot 内部子路径上
- 不能跨出 DocumentRoot 所在目录树(比如不能用 ../ 跳出去)
- 拼接结果必须是 DocumentRoot 下的真实子目录或文件
Alias 的路径映射不涉及拼接
Alias 不做“拼接”,而是“替换”。例如配置了 Alias /uploads /data/uploads,那么访问 example.com/uploads/photo.jpg 时,Apache 会直接查找 /data/uploads/photo.jpg,完全忽略 DocumentRoot 的值。URL 中 /uploads 之后的部分(如 /photo.jpg)只是附加在目标目录后的路径,不是从 DocumentRoot 出发拼出来的。
使用ydata-profiling(前身为pandas-profiling)生成全面的数据质量报告,包含相关性分析、缺失值模式和基数检测。导出交互式HTML仪表板和JSON摘要。
- Alias 后的 URL 前缀(如 /uploads)被整个剥离
- 剩余路径(如 /photo.jpg)直接追加到 Alias 指定的物理路径后
- 目标路径可以是任意绝对路径,与 DocumentRoot 无关
两者共存时的优先级与行为差异
URL 匹配按顺序进行,Alias 优先于 DocumentRoot。只要请求路径能匹配某个 Alias 的前缀,就不再进入 DocumentRoot 拼接流程。比如同时存在:
- DocumentRoot "/var/www/app"
- Alias "/static" "/opt/cdn/static"
那么 /static/js/main.js 会走 Alias 映射到 /opt/cdn/static/js/main.js;而 /js/main.js 才会走 DocumentRoot 拼接成 /var/www/app/js/main.js。
常见误区:Alias 并非“DocumentRoot 的子集”
有人误以为 Alias 是 DocumentRoot 的延伸,其实它完全独立。Alias 的目标目录甚至可以是 /home/user/files、/mnt/nas/share 这类完全脱离网站代码树的位置。它的存在意义正是打破 DocumentRoot 的边界限制,让资源组织更灵活、更安全。

















