我试图启用在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未启用。 我究竟做错了什么?
回复 LimitExcept在任何Apache的configuration文件中都没有Limit或LimitExcept指令。 /var/www/html/updates/或/var/www/html/没有.htaccess文件。
回复Zoredache: Apache有写访问更新。
回复iiegn:我给尸体一个尝试。 显然WebDAV没有启用。
dav:!> open http://hybrid/updates/ Could not access /updates/ (not WebDAV-enabled?): 405 Method Not Allowed Connection to `hybrid' closed.
日志中的唯一相关事件(LogLeveldebugging)位于访问日志中:
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"
我终于弄明白了。
代替
<Location /var/www/html/updates> Dav On </Location>
它需要( Directory而不是Location )
<Directory /var/www/html/updates> Dav On </Directory>
设置似乎足够了。
为了testing这个设置,你可以尝试一下尸体 ,Unix的命令行WebDAV客户端。 在那里,从"> open URL" ,看是否可以打开连接。 然后, "> propget ." 或"> ls"
…和PROPFIND请求注意: http : //httpd.apache.org/docs/2.2/mod/mod_dav.html#davdepthinfinity 。