Нужно mod_rewrite только для перенаправления, если шаблон найден в RewriteMap - PullRequest
2 голосов
/ 13 февраля 2012

Мне нужно использовать mod_rewrite, чтобы проверить, находится ли определенный шаблон в текстовом файле, и перенаправить его, только если он найден.Я хочу перенаправить URL-адреса на заставочную страницу в зависимости от того, содержат ли они идентификатор пользователя, найденный в файле карты.

Все идентификаторы пользователя соответствуют одному и тому же шаблону, поэтому я сопоставляю этот шаблон инакормить его на мое отображение.Допустим, идентификатор пользователя может выглядеть следующим образом

12ab-34bc-5601

Совпадение шаблона и последующее перенаправление работает нормально.Если совпадение найдено, пользователь перенаправляется на мою заставку.Однако, если на карте не найдено совпадений, они перенаправляются на исходный запрос.это создает цикл перенаправления, даже когда я использую флаг L.

RewriteEngine on
RewriteMap UserBlockMap txt:/home/username/users.map
RewriteRule <user id pattern> ${UserBlockMap:$3|$1} [R,L,NE]

Есть ли что-то, что я могу сделать, чтобы разорвать этот цикл перенаправления, или RewriteMap просто не тот инструмент, который я хочу использовать здесь?

1 Ответ

2 голосов
/ 13 февраля 2012

Я раньше не знал, но RewriteRule может вернуться обратно и проверить RewriteCond. решение, которое я нашел, было это.

RewriteCond ${UserBlockMap:$3}  !^$  [NC]
RewriteRule <user id pattern> ${UserBlockMap:$3|$1} [R,L,NE]

на основе того, что изложено в этом сообщении в блоге. http://www.jeremytunnell.com/posts/mod_rewrite-attempting-to-bend-rewritemap-rewritecond-and-rewriterule-to-my-will

...