如何在 Apache 中启用 HTTP-DAV?

如何在 Apache 中启用 HTTP-DAV?

我正在尝试在 CentOS 5.4 上运行的 Apache(httpd.x86_64 2.2.3-43.el5.centos)上启用 HTTP-DAV。

我的httpd.conf中有以下相关条目。

LoadModule dav_module modules/mod_dav.so
LoadModule dav_fs_module modules/mod_dav_fs.so

<IfModule mod_dav_fs.c>
    DAVLockDB /var/lib/dav/lockdb
</IfModule>

<Location /var/www/html/updates>
    Dav On
</Location>

/var/www/html/是 Apache 根目录。我已重新加载 Apache,错误日志中没有任何错误。我也可以在 Firefox 中通过 HTTP 访问此目录。

我正在开发一个应用程序,它需要通过 HTTP-DAV 与 Web 服务器通信,但 Web 服务器却报告说“(405) 方法不允许”。当它发送 PROPFIND 请求时会发生这种情况。

当发生这种情况时,Apache 的访问日志会报告以下内容:

192.168.1.29 - - [25/Nov/2010:17:21:26 +0200] "PROPFIND /updates/2.0.1.0/ HTTP/1.1" 405 320 "-" "-"

可能是 HTTP-DAV 未启用。我做错了什么?

回复 pacey:Apache 的任何配置文件中都没有Limit或指令。或LimitExcept中没有 .htaccess 文件。/var/www/html/updates//var/www/html/

回复 Zoredache:Apache 具有更新的写权限。

回复 iiegn:我尝试了 cadaver。显然 WebDAV 没有启用。

dav:!> open http://hybrid/updates/
Could not access /updates/ (not WebDAV-enabled?):
405 Method Not Allowed
Connection to `hybrid' closed.

日志(LogLevel debug)中唯一相关的内容是在访问日志中:

192.168.1.240 - - [26/Nov/2010:14:41:45 +0200] "OPTIONS /updates/ HTTP/1.1" 200 - "-" "cadaver/0.22.3 neon/0.25.5"
192.168.1.240 - - [26/Nov/2010:14:41:45 +0200] "PROPFIND /updates/ HTTP/1.1" 405 319 "-" "cadaver/0.22.3 neon/0.25.5"

答案1

我终于弄明白了。

代替

<Location /var/www/html/updates>
    Dav On
</Location>

它必须是(Directory而不是Location

<Directory /var/www/html/updates>
   Dav On
</Directory>

答案2

这个设置似乎足够了。

要测试设置,您可以尝试尸体,Unix 的命令行 WebDAV 客户端。首先,"> open URL"查看是否可以打开连接。然后,"> propget ."或者"> ls"

...并PROPFIND注意以下请求:http://httpd.apache.org/docs/2.2/mod/mod_dav.html#davdepthinfinity

相关内容