You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决Horde Framework+lighttpd下CalDAV/CardDAV连接失败问题

问题描述

在Debian 11(bullseye)系统上,使用Horde Framework 5.2.23和lighttpd 1.4.59搭建CalDAV/CardDAV服务,但iPhone或Thunderbird无法连接,怀疑lighttpd的URL重写配置存在问题。

使用版本

  • Debian 11(bullseye)
  • Lighttpd 1.4.59
  • Horde Framework 5.2.23

当前lighttpd配置

$HTTP["host"] == "dav.test.de" {
 url.rewrite-if-not-file = ("" => "/rpc.php")
}

执行的curl查询

curl.exe -X PROPFIND --basic --user "username:password" dav.test.de

返回结果

<?xml version="1.0" encoding="utf-8"?>
<d:error xmlns:d="DAV:" xmlns:s="http://sabredav.org/ns">
  <s:exception>Sabre\DAV\Exception\Forbidden</s:exception>
  <s:message>Requested uri (/) is out of base uri (/rpc.php/)</s:message>
  <s:sabredav-version>1.8.12</s:sabredav-version>
</d:error>

解决思路

  1. 修正lighttpd重写规则
    当前规则将根路径直接指向/rpc.php,但SabreDAV(Horde底层依赖的DAV库)需要保留原始请求路径才能正确匹配Base URI。修改重写规则,把所有请求转发到/rpc.php并附带原路径:
$HTTP["host"] == "dav.test.de" {
  url.rewrite-if-not-file = (
    "^/(.*)$" => "/rpc.php/$1"
  )
}

这样无论是根路径/还是子路径(如/calendars/user/),都会被正确转发,让SabreDAV识别到合法的请求URI。

  1. 检查Horde的Base URI配置
    打开Horde的DAV配置文件(通常位于conf.d/dav.php),确认base_uri设置正确。如果所有请求都通过/rpc.php处理,可将base_uri设为/rpc.php/,或留空让系统自动检测。

  2. 验证配置并重启服务
    重启lighttpd使配置生效:

systemctl restart lighttpd

再次用curl测试:

curl.exe -X PROPFIND --basic --user "username:password" dav.test.de

若返回包含用户日历/通讯录列表的正常DAV响应,说明重写规则已修复问题。

  1. 确认lighttpd模块启用状态
    确保mod_rewrite模块已启用,Debian系统下执行以下命令启用:
lighttpd-enable-mod rewrite

启用后重启lighttpd服务。

内容的提问来源于stack exchange,提问作者julian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 00:41:57