Директивы rewrite
и location
используют нормализованный URI, который не содержит строку запроса.
Чтобы проверить строку запроса, вам необходимо обратиться к переменной $request_uri
или $args
использование оператора if
и / или директивы map
.
Преимущество использования $request_uri
заключается в том, что он содержит исходный запрос и поможет избежать цикла перенаправления.
Еслиу вас есть только одно перенаправление, решение map
возможно переполнено.
Попробуйте:
if ($request_uri ~ ^/index\.php\?tag=(.*)§ion=(.*)&type=(.*)$) {
return 301 /$1/$2/$3;
}
location / {
...
}
См. это предупреждение об использовании if
.