我将 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>