В вашем решении есть две ошибки: 1) location
не соответствует /user
и 2) rewrite
также добавляет исходные аргументы.
Это можно исправить с помощью точногосовпадение location
и конечный ?
на rewrite
. Например:
location = /user {
...
rewrite ^ /user/$param1/$param2/$param3? permanent;
}
Однако оператор map
является более понятным и расширяемым решением, например:
map $request_uri $redirect {
default 0;
~*^/user?param1=(?<p1>\d+)¶m2=(?<p2>\d+)¶m3=(?<p3>\d+)$ /user/$p1/$p2/$p3;
}
server {
...
if ($redirect) { return 301 $redirect; }
...
}
См. этот документ для деталей.