我认为您无法使用香草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({})