如何在 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
orLimitExcept
指令。/var/www/html/updates/
或中沒有 .htaccess 文件/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 調試)在訪問日誌中:
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>
設置似乎足夠了。
要測試設置,您可以嘗試cadaver,這是 Unix 的命令行 WebDAV 客戶端。在那裡,從諸如
"> open URL"
查看是否可以打開連接之類的東西開始。那麼,"> propget ."
或者"> ls"
…並與
PROPFIND
請求注意:http://httpd.apache.org/docs/2.2/mod/mod_dav.html#davdepthinfinity。