如何在 Apache 中启用 HTTP-DAV?

Man*_*kis 2 webdav apache-2.2

我正在尝试在 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>
Run Code Online (Sandbox Code Playgroud)

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

我有一个正在开发的应用程序,它需要通过 HTTP-DAV 与 Web 服务器通信,但报告 Web 服务器返回“(405) Method not allowed”。当它发送 PROPFIND 请求时会发生这种情况。

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

192.168.1.29 - - [25/Nov/2010:17:21:26 +0200] "PROPFIND /updates/2.0.1.0/ HTTP/1.1" 405 320 "-" "-"
Run Code Online (Sandbox Code Playgroud)

大概没有启用 HTTP-DAV。我究竟做错了什么?

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

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

回复 iiegn:我试了一下尸体。显然未启用 WebDAV。

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

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

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"
Run Code Online (Sandbox Code Playgroud)

Man*_*kis 6

我终于弄明白了。

代替

<Location /var/www/html/updates>
    Dav On
</Location>
Run Code Online (Sandbox Code Playgroud)

它需要是(Directory而不是Location

<Directory /var/www/html/updates>
   Dav On
</Directory>
Run Code Online (Sandbox Code Playgroud)

  • 如果启用 DirectoryIndex 并且索引文件存在(通常是 index.html),DAV 将无法在目录上工作。我猜这两种情况需要对同一个 HTTP 请求做出不同的响应。 (2认同)