CentOS 上的 WebDAV - 尝试上传时出现 403 错误

Dar*_*ton 4 centos webdav apache-2.2

我将 Apache2 配置为允许在目录上使用 WebDav(CentOS 5 / Plesk 8.6):

  • 在 httpd.conf 中启用了 WebDav
  • /var/lib/dav/lockdb 可由 Apache 写入
  • 我的目标目录是 chmod 777
  • 我的目标目录是 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 基本
        需要有效用户

        DAV 开启
    允许覆盖无
        <限制PUT POST DELETE PROPFIND PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>
                需要有效用户
        </限制>
</目录>

更新 6/6

能够以最少的努力让 WebDAV 在不同的域上工作。这两个域之间的唯一区别是,在拒绝允许写访问的域中,我有一个 DocumentRoot 指令:

    DocumentRoot /var/www/vhosts/domain.com/httpdocs/app/webroot

这可能会导致一些问题吗?

小智 5

同样的问题。解决者:

<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>
Run Code Online (Sandbox Code Playgroud)


小智 3

我最近在 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]
Run Code Online (Sandbox Code Playgroud)

上面的内容只影响 PUT 方法是有道理的,因为在这种情况下 REQUEST_FILENAME 不存在。

Drupal 区域内没有 WebDAV 区域(这似乎是一个合理的限制)解决了该问题。

另外,我认为 SELinux 可能会导致不同的错误,但上面的讨论中没有提到。您是否尝试禁用 SELinux?