如何设置XAMPP Apache以访问除系统根目录外的其他文件夹?
- 内容介绍
- 文章标签
- 相关推荐
本文共计780个文字,预计阅读时间需要4分钟。
不能直接将 `DocumentRoot` 改成系统根目录(如 `C:\` 或 `/`),Apache 会拒绝启动并返回 403 错误。这是安全机制,不是配置错误。
用 Alias 映射外部文件夹到 URL 路径
这是最常用、最安全的方式:不改动主站点结构,只给某个本地路径(比如 D:/myapp)分配一个子路径(如 /myapp),访问 http://localhost/myapp/ 即可加载它。
- 打开
C:/xampp/apache/conf/httpd.conf(Windows)或对应路径的主配置文件 - 确认
LoadModule alias_module modules/mod_alias.so未被注释(即模块已启用) - 在
<IfModule alias_module>区块内添加两段配置(路径和别名按需替换):
Alias "/myapp" "D:/myapp" <Directory "D:/myapp"> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory>
- 保存后重启 Apache;若仍 403,请检查路径中是否含中文、空格或特殊符号 —— 建议全用英文+下划线
为什么改 DocumentRoot 后常报 403?
改 DocumentRoot 不只是换路径,还必须同步更新同路径的 <Directory> 权限块。XAMPP 默认只对 htdocs 开放权限,其他路径即使路径写对了,也会被全局 Require local 拦截。
-
DocumentRoot "D:/myproject"必须配对<Directory "D:/myproject">,且里面要有Require all granted - Windows 下路径推荐用正斜杠
/或双反斜杠\,单反斜杠可能被误解析为转义符 - 如果启用了
httpd-vhosts.conf,虚拟主机定义会覆盖主DocumentRoot,此时必须在<VirtualHost>内部再写一遍<Directory>
外部文件夹里 PHP 文件不执行,只下载或显示源码
Apache 默认只在 DocumentRoot 和内置路径(如 htdocs)里启用 PHP 处理器。用 Alias 或 VirtualHost 挂载的路径,PHP 模块不会自动生效。
- 在对应
<Directory>块内添加:php_flag engine on(PHP 7.4+ 推荐)或AddHandler application/x-httpd-php .php - 更稳妥的做法:在该目录下放一个
.htaccess文件,内容为:php_flag engine on(前提是主配置中AllowOverride All已启用) - 验证 PHP 是否挂载成功:访问
http://localhost/myapp/info.php(内容为<?php phpinfo(); ?>),不应下载也不应显示纯文本
真正容易被忽略的是权限继承问题:XAMPP 的 httpd-xampp.conf 文件里有一条全局 Require local,它会压制你所有自定义 <Directory> 的设置。只要没注释掉它,哪怕你写了十遍 Require all granted,照样 403。
本文共计780个文字,预计阅读时间需要4分钟。
不能直接将 `DocumentRoot` 改成系统根目录(如 `C:\` 或 `/`),Apache 会拒绝启动并返回 403 错误。这是安全机制,不是配置错误。
用 Alias 映射外部文件夹到 URL 路径
这是最常用、最安全的方式:不改动主站点结构,只给某个本地路径(比如 D:/myapp)分配一个子路径(如 /myapp),访问 http://localhost/myapp/ 即可加载它。
- 打开
C:/xampp/apache/conf/httpd.conf(Windows)或对应路径的主配置文件 - 确认
LoadModule alias_module modules/mod_alias.so未被注释(即模块已启用) - 在
<IfModule alias_module>区块内添加两段配置(路径和别名按需替换):
Alias "/myapp" "D:/myapp" <Directory "D:/myapp"> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory>
- 保存后重启 Apache;若仍 403,请检查路径中是否含中文、空格或特殊符号 —— 建议全用英文+下划线
为什么改 DocumentRoot 后常报 403?
改 DocumentRoot 不只是换路径,还必须同步更新同路径的 <Directory> 权限块。XAMPP 默认只对 htdocs 开放权限,其他路径即使路径写对了,也会被全局 Require local 拦截。
-
DocumentRoot "D:/myproject"必须配对<Directory "D:/myproject">,且里面要有Require all granted - Windows 下路径推荐用正斜杠
/或双反斜杠\,单反斜杠可能被误解析为转义符 - 如果启用了
httpd-vhosts.conf,虚拟主机定义会覆盖主DocumentRoot,此时必须在<VirtualHost>内部再写一遍<Directory>
外部文件夹里 PHP 文件不执行,只下载或显示源码
Apache 默认只在 DocumentRoot 和内置路径(如 htdocs)里启用 PHP 处理器。用 Alias 或 VirtualHost 挂载的路径,PHP 模块不会自动生效。
- 在对应
<Directory>块内添加:php_flag engine on(PHP 7.4+ 推荐)或AddHandler application/x-httpd-php .php - 更稳妥的做法:在该目录下放一个
.htaccess文件,内容为:php_flag engine on(前提是主配置中AllowOverride All已启用) - 验证 PHP 是否挂载成功:访问
http://localhost/myapp/info.php(内容为<?php phpinfo(); ?>),不应下载也不应显示纯文本
真正容易被忽略的是权限继承问题:XAMPP 的 httpd-xampp.conf 文件里有一条全局 Require local,它会压制你所有自定义 <Directory> 的设置。只要没注释掉它,哪怕你写了十遍 Require all granted,照样 403。

