CentOS 上の WebDAV - アップロードしようとすると 403 エラーが発生する

CentOS 上の WebDAV - アップロードしようとすると 403 エラーが発生する

ディレクトリで WebDav を許可するように Apache2 を設定しました (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>
        ダヴ・オン
    AllowOverride なし
        注文の許可、拒否
        すべて許可
</ディレクトリ>

認証を使用してディレクトリに接続し、そこからファイルをダウンロードすることはできます。しかし、ディレクトリに書き込むことはできません。ディレクトリをアップロードまたは作成しようとすると、403 エラーが発生します。

何かヒントはありますか?

前もって感謝します -

更新 - 6/5以下のコメントを参考にして、この問題が .htpasswd で保護されたディレクトリとの何らかの競合によるものであることを突き止めました。保護されていないディレクトリを作成し、WebDAV アップロードを有効にすることはできます。しかし、ディレクトリで Basic 認証を有効にすると、すべてがうまくいかなくなります。読み取りはできますが、アップロードできなくなりました。

これは私の vhost.conf です:

<ディレクトリ /var/www/vhosts/domain.com/subdomains/subdomain/httpdocs/>
        認証ユーザーファイル /var/www/.htpasswd
        AuthName「ログイン」
        認証タイプ 基本
        有効なユーザーを要求する

        DAVオン
    AllowOverride なし
        <Limit PUT POST DELETE PROPFIND PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>
                有効なユーザーを要求する
        </制限>
</ディレクトリ>

6/6更新

最小限の労力で、別のドメインで WebDAV を動作させることができました。2 つのドメインの唯一の違いは、書き込みアクセスを許可しないドメインに 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: (例) を使ってみましたか?

  <Limit PUT POST DELETE PROPFIND PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>
    Require valid-user
  </Limit>

関連情報