-1

.htaccess を使用して、訪問者の IP アドレスに基づいてフォルダーに書き換えたいと考えています。ユーザー名が関連付けられた IP アドレスのリストがあります (テキスト ファイル内)。ユーザー名はフォルダ名でもあります。

  • 192.168.0.2 - ジョン
  • 192.168.0.3 - ベン

例: John (IP ..0.2) が www.domain.com にアクセスすると、/John フォルダのコンテンツが表示されます。

ユーザー名と IP のバインドは PHP で行うため、.txt ファイルを生成できるように RewriteMap を使用することを好みます。

残念ながら、どこから始めればよいか考えなければなりません。ユーザーの IP に基づく書き換えは問題ではありません。問題は、リンクされたユーザー名を見つけることです。

どんな助けでも大歓迎です!

4

1 に答える 1

1

これを行うにはいくつかの方法がありますが、ユーザーディレクトリと認証を提供する既存のモジュールが多数あるのに、とにかく次のことができるのはなぜでしょうか。

# 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-_]+**
于 2015-07-28T14:00:20.277 に答える