使用mod_rewrite实际上chroot客户端?

我正在尝试为各种客户端设置webdav网站以上传/下载文件。但是,我不希望每个客户端都能看到其他客户端的数据。每个客户端都使用SSL客户端证书进行身份验证,因此我想将它们chroot到自己的目录树中。 例如: https://example.com/webdav/upload 应映射到文件系统位置 / somewebroot / WebDAV的/ SSL_USERNAME /上传 我认为我可以使用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>
    
已邀请:
一旦你发现“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>
    

要回复问题请先登录注册