DocumentRoot定义网站主根目录,所有请求默认从此解析;Alias将URL路径映射到DocumentRoot之外的任意物理位置,两者共存时Alias优先匹配,需分别配置Directory权限并确保mod_alias已启用。
DocumentRoot 是网站的“家”,所有请求默认从这里找文件;Alias 是给外部目录开的一扇门,让浏览器能访问 DocumentRoot 之外的资源。两者不是替代关系,而是分工协作:一个定主阵地,一个拓新通道。
它告诉 Apache:“用户访问我的域名时,请从这个文件夹开始找网页”。必须是绝对路径,且 Apache 进程要有读取权限。
DocumentRoot "/var/www/example.com"(Linux)或 DocumentRoot "C:/xampp/htdocs"(Windows)<Directory> 块授权,例如:<Directory "/var/www/example.com"><br> Require all granted<br></Directory>
systemctl restart apache2 或 httpd -k restart),仅重载配置不生效"/var/www/example.com/")、权限未开放、目录属主不是 Apache 运行用户(如 www-data)当你想把 /uploads 指向 /srv/user_uploads,或把 /static 指向 SSD 上的高速缓存目录,就得用 Alias——它不改变 DocumentRoot,只新增一条“路由规则”。
Alias /url-path "/absolute/file/system/path",URL 路径必须以 / 开头,物理路径推荐绝对路径<Directory> 块,且路径要与 Alias 后的物理路径完全一致(尾部斜杠可选但建议统一)Require all granted,旧式 Allow from all 已失效<Directory> 中加 Options FollowSymLinks
DocumentRoot 是全局起点,Alias 是局部扩展。它们共存时,Alias 优先匹配——比如访问 /images/logo.png,即使 DocumentRoot 下也有 images/ 目录,只要配置了 Alias /images /shared/images,就会走别名路径。
.htaccess 中,只能放在主配置文件(httpd.conf)、虚拟主机块(<VirtualHost>)或启用的站点配置里mod_alias 已启用(Linux 查 apache2ctl -M | grep alias,Windows 检查 httpd.conf 是否取消注释 LoadModule alias_module modules/mod_alias.so)配完别急着上线,先确认三件事:模块加载、路径权限、进程可读。
<Directory> 权限没开,或 Apache 用户无目标目录执行权(Linux 的 +x 对目录必需)servershare)?Apache 服务需以有权限的域用户运行,不能用 Local System