
我將 Apache2 配置為允許在目錄上使用 WebDav (CentOS 5 / Plesk 8.6):
- WebDav 在 httpd.conf 中啟用
- /var/lib/dav/lockdb 可由 Apache 寫入
- 我的目標目錄是 chmod 777
- 我的目標目錄是 chowned apache:psacln
- 使用基本身份驗證(透過 Plesk 介面設定)
在我的 vhost.conf 中我有:
<目錄 /var/www/vhosts/domain.com/httpdocs/target_dir> 戴夫安 允許覆蓋無 訂單允許、拒絕 允許所有 </目錄>
我可以使用身份驗證精細連接到該目錄並從中下載檔案。但我無法寫入該目錄。當我嘗試上傳或建立目錄時收到 403 錯誤。
有人有建議嗎?
提前致謝 -
更新 - 6/5使用下面的評論,我已將問題隔離為與 .htpasswd 受保護目錄的某種類型的衝突。我可以建立一個不受保護的目錄並啟用 WebDAV 上傳。但是,一旦我在目錄上啟用基本身份驗證,一切都會出錯。我可以閱讀但不再上傳。
這是我的 vhost.conf:
<目錄/var/www/vhosts/domain.com/subdomains/subdomain/httpdocs/> AuthUserFile /var/www/.htpasswd 驗證名“登入” AuthType 基本 需要有效用戶 數位音訊開啟 允許覆蓋無 <限制 PUT POST DELETE PROPFIND PROPPATCH MKCOL 複製移動鎖定解鎖> 需要有效用戶 </限制> </目錄>
更新6/6
能夠以最小的努力讓 WebDAV 在不同的網域上運作。這兩個域之間的唯一區別是,在拒絕允許寫入存取的域中,我有一個 DocumentRoot 指令:
文檔根 /var/www/vhosts/domain.com/httpdocs/app/webroot
這可能會導致一些問題嗎?
答案1
我最近在 Fedora 10 系統上遇到了同樣的問題。就我而言,罪魁禍首是我在 Apache 中所做的一些奇怪的重定向。具體來說,我使用內容管理系統(確切地說是 Drupal),其 .htaccess 中包含以下重定向邏輯,將遺失的檔案重定向到 PHP 腳本:
# Rewrite URLs of the form 'x' to the form 'index.php?q=x'.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
上面的內容只影響 PUT 方法是有道理的,因為在這種情況下 REQUEST_FILENAME 不存在。
Drupal 區域內沒有 WebDAV 區域(這似乎是一個合理的限制)解決了這個問題。
另外,我認為 SELinux 可能會導致不同的錯誤,但上面的討論中沒有提到。您是否嘗試停用 SELinux?
答案2
同樣的問題。解決方法:
<Location /xyz>
DAV On
AuthType Digest
AuthName "webdav-xmarks"
AuthDigestProvider file
AuthUserFile "/home/xy/xba/digest-password"
Require valid-user
RewriteEngine off <-- this part solved it!
</Location>
答案3
同樣的問題。
透過在 webdav 目錄中建立 .htaccess 檔案來解決:
RewriteEngine off
在這裡找到:http://annoyingtechnicaldetails.wordpress.com/2007/07/20/webdav-vs-drupal-htaccess-redirect-rules/
答案4
您是否嘗試使用限制:(例如)
<Limit PUT POST DELETE PROPFIND PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>
Require valid-user
</Limit>