Нужно переписать nginx

У меня есть URL-адреса, такие как:

index.php?q=123&w=456&e=789

и мне нужно переписать их в нечто вроде:

index/123/456/789

без использования "если".

Пока что я пробовал:

location / {
    rewrite ^/index.php\?q=(.*)&w=(.*)&e=(.*)$ /index/$1/$2/$3;
}

Но это не работает. Есть идеи?

1 ответ

Решение

Короткий ответ: вы не можете без использования if,

Длинный ответ - регулярное выражение в rewrite синтаксис соответствует только URI.

Попробуйте что-то вроде этого:

    location /index.php {
        if ($args ~ "^q=(.*)&w=(.*)&e=(.*)") {
            set $arg_q $1;
            set $arg_w $2;
            set $arg_e $3;
            rewrite_log on;
        rewrite ^ /index/$arg_q/$arg_w/$arg_e last;
        }
    }
Другие вопросы по тегам