xampp 默认未启用 webdav,需手动启用 mod_dav.so 和 mod_dav_fs.so 模块、取消 httpd-dav.conf 注释、放行 propfind 等关键方法,并配置 digest 认证与 davlockdb 写权限。

直接能用,但默认是关着的,且 XAMPP 自带的 httpd-dav.conf 有两处关键限制:一是被注释掉了,二是它的 <limitexcept></limitexcept> 规则默认拦掉了 PROPFIND —— 这个请求 Windows 映射网络驱动器时第一秒就发,不放行就直接报“找不到网络路径”。
确认并启用 WebDAV 模块
Apache 要跑 WebDAV,必须加载两个模块:mod_dav.so 和 mod_dav_fs.so。XAMPP 默认已编译进去了,但没启用。
- 打开
C:\xampp\apache\conf\httpd.conf(Windows)或/opt/lampp/etc/httpd.conf(Linux/macOS) - 取消以下两行的注释(删掉开头的
#):LoadModule dav_module modules/mod_dav.so<br>LoadModule dav_fs_module modules/mod_dav_fs.so
- 再找到这行:
# Include "conf/extra/httpd-dav.conf",同样去掉#
修正 httpd-dav.conf 中的权限陷阱
XAMPP 自带的 httpd-dav.conf 在 <directory></directory> 块里用了 <limitexcept get options></limitexcept>,但它漏了 PROPFIND —— Windows、macOS Finder、甚至大多数 WebDAV 客户端初始化连接时都靠它列目录结构。不加进去,连接会卡在“正在验证凭据”然后失败。
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 编辑
C:\xampp\apache\conf\extra\httpd-dav.conf - 把
<limitexcept get options></limitexcept>改成:<limitexcept get propfind options></limitexcept> - 确保
Dav On在<directory></directory>内部,且路径真实存在(比如C:/xampp/webdav) - 如果想允许写入,别只写
require valid-user,得明确放开方法:<requireany><br> Require method GET PROPFIND OPTIONS PUT MKCOL DELETE COPY MOVE LOCK UNLOCK<br></requireany>
创建用户并设置文件权限
WebDAV 认证用的是 Digest(比 Basic 更安全),所以必须用 htdigest.exe(Windows)或 htdigest(Linux/macOS)生成密码文件,不能用 htpasswd。
- 命令示例(Windows):
htdigest.exe -c "C:\xampp\security\webdav.htpasswd" "XAMPP with WebDAV" admin
注意引号里的 realm 名必须和配置中AuthName完全一致 - Linux/macOS 用户需确保
/opt/lampp/webdav和/opt/lampp/var/DavLock目录对daemon用户可读写:sudo chown -R daemon:daemon /opt/lampp/webdav /opt/lampp/var/DavLock
- Windows 不需要改权限,但要确认
C:\xampp\webdav文件夹存在且 Apache 进程(通常以SYSTEM或你当前用户身份运行)有完全控制权
重启后仍连不上?检查三个硬性条件
很多“配置完了却连不上”的问题其实卡在基础层,不是配置写错了,而是没满足运行前提:
- Apache 必须已启动(
xampp-control.exe里 Apache 状态是绿色) - 防火墙要放行 80 端口(Windows Defender 防火墙默认会拦);若用非标准端口(如 8080),URL 必须显式写上:
http://localhost:8080/webdav - 浏览器直访
http://localhost/webdav应返回 401 Unauthorized(说明认证机制生效了);若返回 403 或 404,说明Alias路径或<directory></directory>路径不匹配,或模块根本没加载成功
最常被忽略的是 PROPFIND 方法拦截和 DavLockDB 目录无写权限——前者让客户端连都连不进,后者让任何写操作(新建、上传、重命名)直接 500 内部错误,日志里只有一句 “Could not open DavLockDB”。










