1

さまざまなクライアントがファイルをアップロード/ダウンロードするための webdav Web サイトをセットアップしようとしています。ただし、各クライアントに他のクライアントのデータを見せたくありません。各クライアントは 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 に答える