바닐라 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({})