次のような特定のアプリケーション ID にユーザー ID を関連付けたい:
<user_id> <app_id>
615 1
616 7
617 3
618 3
私のURIは次のようになります:
/<app_id>/<user_id>/...
ここで、ユーザーのブックマークに影響を与えずにアプリケーションを簡単に変更できるようにしたいと考えています。私の例では、両方が必要です
/1/615/index.html or /3/615/index.html
として奉仕する
/1/615/index.html
次のルールでは、無限ループが発生します。
RewriteMap map dbm:user-application.map
RewriteRule ^/([0-9]+)/([0-9]+)/(.*)$ /${map:$2}/$2/$3 [R,L]
...
#other proxy code to forward request to applications
リダイレクト後、Apache は常に同じルールを実行することを理解しています。次に、次のように、ループをブロックする書き換え条件を追加しようとしました
RewriteMap map dbm:user-application.map
RewriteCond %{REQUEST_URI} !^/${map:$2}
RewriteRule ^/([0-9]+)/([0-9]+)/(.*)$ /${map:$2}/$2/$3 [R,L]
書き換えログを正しく読むと、条件パターンで変数 !^/${map:$2} が置き換えられず、「そのまま」チェックされていることがわかります。そして、条件は常に真であり、それでも無限ループが発生します。
アプリケーション ID がマップと一致するとすぐにループをブロックするアイデアはありますか?