Nginx переписать часть URL с помощью переменных GeoIP - PullRequest
0 голосов
/ 30 августа 2018

У меня есть такой URL: https://example.com/home/anything/whatever

Мне нужно переписать этот URL и заменить / home / part переменными из GeoIP и http-request-language: https://example.com/ch/de/anything/whatever

У меня есть соответствие местоположения в корне, которое уже делает это, и это работает:

location = / {
    rewrite ^ $location_uri$lang permanent;
}

Теперь мне нужно это для случая выше, и я использовал:

location ~ /home/(.*) {
    rewrite ^/home/(.*)$ /$location_uri$lang/$1/ permanent;
}

Исходная часть запроса ($ 1) не добавляется в конец URL: https://example.com/ch/de//

Если я удаляю 2 переменные $ location_uri и $ lang и заменяю их фиксированным текстом (/ ch / de), это работает.

Возможно ли иметь эти переменные в перезаписи?

1 Ответ

0 голосов
/ 20 сентября 2018

Мне удалось сделать это за 2 переписывания:

location ~ ^/home(.*)$ {
    rewrite ^/home(.*)$ /$location_uri$lang$request_uri permanent;
}

location ~ ^/ch/de/home(.*)$ {
    rewrite ^(.*)/home(.*)$ $1$2 permanent;
}

Сначала я переписываю / home / с помощью GeoIP vars и добавляю весь URI запроса, включая / home /. Затем я выполняю другое сопоставление местоположения для целевого URI и удаляю часть / home.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...