Я хочу, чтобы связать пользователя Идентификаторы к конкретному идентификатору приложения, как:Использование переменной в RewriteCond состоянии патерн
<user_id> <app_id>
615 1
616 7
617 3
618 3
Мой URIs выглядит как:
/<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]
Если я правильно прочитал мои журналы переписывания, я могу видеть, что переменная ^/$ {карта: $ 2}! Не заменяется в шаблон состояния, но проверено «как оно». И тогда условие всегда верно, и я до сих пор получаю свой бесконечный цикл.
Любая идея заблокировать цикл, как только идентификатор приложения совпадает с моей картой?
related: http://stackoverflow.com/questions/7798099/how-to-block-multiple-mod-rewrite-passes-or-infinite-loops-in-a-htaccess-cont – ben75