Apache-2.2

如何在 Apache 中啟用 HTTP-DAV?

  • January 12, 2017

我正在嘗試在 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的任何配置文件中都沒有LimitorLimitExcept指令。/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

引用自:https://serverfault.com/questions/206052