バニラnginxでこれを行うことはできないと思いますが、nginxのLuaモジュール(http://wiki.nginx.org/HttpLuaModule)をインストールする場合は、それを実行できます。
server {
server_name so.dev;
listen 80;
location / {
root /tmp;
rewrite_by_lua '
local uri = ngx.var.uri
local params = ngx.req.get_uri_args(0)
for key, value in pairs(params) do
uri = string.format("%s_%s=%s", uri, key, value)
end
ngx.req.set_uri(uri)
ngx.req.set_uri_args({})
';
}
}
ローカルでテストし、探していることを実行しているようです。アンパサンドで区切られた他のパラメーターを保持する場合は、rewrite_by_luaブロックを次のように変更します。
local uri = ngx.var.uri
local param_string = ""
local params = ngx.req.get_uri_args(0)
local separator = ""
for key, value in pairs(params) do
param_string = param_string .. separator .. key .. "=" .. value
separator = "&"
end
ngx.req.set_uri(uri .. "_" .. param_string)
ngx.req.set_uri_args({})