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

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

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

  • 在 httpd.conf 中启用了 WebDav
  • /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 上传。但是一旦我在目录上启用基本身份验证,一切都会变糟。我可以读取但不能再上传。

这是我的vhost.conf:

<目录 /var/www/vhosts/domain.com/subdomains/subdomain/httpdocs/>
        验证用户文件 /var/www/.htpasswd
        AuthName“登录”
        AuthType 基本版
        需要有效用户

        DAV 开启
    AllowOverride 无
        <限制 PUT POST 删除 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>

相关内容