1

我正在尝试为各种客户端设置一个 webdav 网站来上传/下载文件。但是我不希望每个客户都看到其他客户的数据。每个客户端都使用 SSL 客户端证书进行身份验证,所以我想将它们 chroot 到他们自己的目录树中。

例如:

我认为我可以为此使用 mod_rewrite,但我的规则似乎让我进入了无限重定向循环。有什么想法吗?

Alias /webdav /somewebroot/webdav
<Directory /somewebroot/webdav>
    RewriteEngine On
    RewriteBase /webdav

    RewriteCond %{SSL:SSL_CLIENT_S_DN_CN} ADMIN #The admin does not get chrooted
    RewriteRule .* - [L]

    RewriteCond %{REQUEST_URI} !^%{SSL:SSL_CLIENT_S_DN_CN}/(.*)
    RewriteRule ^(.*) %{SSL:SSL_CLIENT_S_DN_CN}/$1 [L]
</Directory>
4

1 回答 1

0

一旦您发现“RewriteCond”不支持 PATTERN 中的服务器变量,解决这个问题就相当简单。因此,您必须通过使用反向引用将其纳入模式。此外,“RewriteCond”不使用“RewriteBase”指令,因此您也必须考虑到这一点。

Alias /webdav /somewebroot/webdav
<Directory /somewebroot/webdav>
    RewriteEngine On
    RewriteBase /webdav

    RewriteCond %{SSL:SSL_CLIENT_S_DN_CN} ADMIN #The admin does not get chrooted
    RewriteRule .* - [L]

    RewriteCond %{SSL:SSL_CLIENT_S_DN_CN}::%{REQUEST_URI} !^(.*)::/webdav/\1/(.*)
    RewriteRule ^(.*) %{SSL:SSL_CLIENT_S_DN_CN}/$1 [L]
</Directory>
于 2011-03-29T15:13:44.123 回答