これを行うにはいくつかの方法がありますが、ユーザーディレクトリと認証を提供する既存のモジュールが多数あるのに、とにかく次のことができるのはなぜでしょうか。
# Call an external program each time
RewriteMap userDir "prg:/srv/www/cgi-bin/ipToUserDirectoryMapper.php"
RewriteCond %{REQUEST_URI} !somePatternCommonToAllAlreadyRewrittenRequests
RewriteRule .* /${userDir:%{REMOTE_ADDR}}%{REQUEST_URI} [L,R]
ここで: ipToUserDirectoryMapper.phpは IP アドレスを引数として取り、不明な IP のデフォルトでディレクトリを返します。
または、マッピングは txt ファイルにあります。
# Use a static remap file
RewriteMap userDirMap "txt:/srv/www/ipToDirectoryMap.txt"
RewriteCond %{REQUEST_URI} !somePatternCommonToAllAlreadyRewrittenRequests
RewriteRule ^(.*) /${userDirMap:%{REMOTE_ADDR}|someDefaultUser}%{REQUEST_URI} [L,R]
注: ディレクトリ名に共通の要素が必要になるか、ユーザー ディレクトリの CGI パラメータまたは環境変数 ( SetEnvIf Request_URI "^/John" alreadyRewritten ) を設定して、リダイレクト ループなどを防ぐ必要があります。あなたのディレクトリUserJohn、UserBenを呼び出し、somePatternCommonToAllAlreadyRewrittenRequestsの代わりに:
**!^/User[a-zA-Z0-9-_]+**