NGINX: переписывать только определенный (переменный) путь

0

Я хочу переписать URL-адрес, содержащий конкретный путь переменной, только для одного конкретного IP-пользователя.

http://domain.com/variable

Должно стать:

http://domain.com/variable/system

Однако, если есть другой путь, следующий за / variable, он должен остаться без изменений. Таким образом, следующий URL должен остаться прежним:

http:/domain.com/variable/something-else

Я пробовал следующий код

 if ($http_x_forwarded_for = xxx.xxx.x.xx) {         
           rewrite ^/(.*)$ http://domain.com/$1/system redirect;
 }

Тем не менее, при запуске этого кода, кажется, получить цикл, в результате чего

http://domain.com/variable/system/system/system/system ....

Я понимаю, что идет не так, но я не знаю, как я могу легко / правильно это исправить. Любая помощь будет принята с благодарностью.

Грива
источник

Ответы:

2

Ваш (.*)захват /персонажа тоже. Вы должны исключить это, чтобы предотвратить цикл.

Пытаться:

rewrite ^(/[^/]+)$ $1/system redirect;

Смотрите этот полезный ресурс по регулярным выражениям.

Ричард Смит
источник