ディレクトリでWebDavを許可するようにApache2を構成しました(CentOS 5/Plesk 8.6):
私のvhost.confには:
<Directory /var/www/vhosts/domain.com/httpdocs/target_dir> Dav On AllowOverride none Order allow、deny すべてから許可 </ Directory>
認証を使用してディレクトリに接続し、そこからファイルをダウンロードできます。しかし、私はディレクトリに書き込むことができません。ディレクトリをアップロードまたは作成しようとすると、403エラーが発生します。
誰かヒントはありますか?
前もって感謝します -
更新-6/5以下のコメントを使用して、問題を.htpasswdで保護されたディレクトリとのある種の競合であると特定しました。保護されていないディレクトリを作成して、WebDAVアップロードを正常に有効にすることができます。しかし、ディレクトリで基本認証を有効にすると、すべてが南向きになります。読むことはできますが、アップロードできなくなりました。
これは私のvhost.confです:
<Directory/var/www/vhosts/domain.com/subdomains/subdomain/httpdocs/> AuthUserFile/var/www/.htpasswd AuthName "Login" AuthType Basic 有効なユーザーが必要 DAV on AllowOverride none <Limit PUT POST= DELETE PROPFIND PROPPATCH MKCOL COPY MOVE LOCK UNLOCK> 有効なユーザーが必要 </ Limit> </ Directory>
更新6/6
最小限の労力でWebDAVを別のドメインで動作させることができました。 2つのドメインの唯一の違いは、書き込みアクセスの許可を拒否するドメインには、DocumentRootディレクティブがあることです。
DocumentRoot /var/www/vhosts/domain.com/httpdocs/app/webroot
これはいくつかの問題を引き起こしている可能性がありますか?
私は最近、Fedora10システムで同じ問題に苦しんでいました。私の場合、犯人は私がApacheで行っていた奇妙なリダイレクトでした。具体的には、.htaccessに次のリダイレクトロジックが含まれるコンテンツ管理システム(正確にはDrupal)を使用して、不足しているファイルを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]
上記の場合、REQUEST_FILENAMEが存在しないため、上記がPUTメソッドにのみ影響することは理にかなっています。
Drupal領域内にWebDAV領域がないことは、合理的な制約のように思われますが、問題を修正します。
また、SELinuxは別のエラーを引き起こす可能性が高いと思いますが、上記の説明では言及されていません。 SELinuxを無効にしてみましたか?
同じ問題。解決者:
<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>
制限を使用してみましたか:(たとえば)
<Limit PUT POST DELETE PROPFIND PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>
Require valid-user
</Limit>
Error_logは何と言っていますか?それは最初に見る場所です。
また、通常のaccess_logも確認してください。一部のDAVクライアントは、作業を行っている場所よりも高いレベルのディレクトリでDAVを実行しようとすることがあります。
同じ問題。
Webdavディレクトリに.htaccessファイルを作成して解決:
RewriteEngine off
ここにあります: http://annoyingtechnicaldetails.wordpress.com/2007/07/20/webdav-vs-drupal-htaccess-redirect-rules/
Ram Prasadが言ったように、vhosts.configファイルのディレクトリエントリにそのLimitステートメントが必要です。
また、.htaccessファイルと同じディレクトリにApacheが所有する.DAVディレクトリも必要です。 Apacheはこのフォルダを使用して一時ファイルを書き込むため、これにより通常403エラーが発生することがわかりました。