Nginx 如何重写和更改参数的大小写?
我需要执行Nginx永久重定向,还需要更改参数的大小写 当前,重写规则如下所示:Nginx 如何重写和更改参数的大小写?,nginx,url-rewriting,lua,Nginx,Url Rewriting,Lua,我需要执行Nginx永久重定向,还需要更改参数的大小写 当前,重写规则如下所示: location / { rewrite ^/old_url/(.*)/(.*).html$ "http://cdn.example.com/test/$1 $2.pdf" permanent; } 我尝试使用Lua更改大小写,然后传递$var1和$var2重写第二个参数: set_by_lua $var1 "return ngx.arg[1]:lower()" $1; set_by_lua $var2
location / {
rewrite ^/old_url/(.*)/(.*).html$ "http://cdn.example.com/test/$1 $2.pdf" permanent;
}
我尝试使用Lua更改大小写,然后传递$var1
和$var2
重写第二个参数:
set_by_lua $var1 "return ngx.arg[1]:lower()" $1;
set_by_lua $var2 "return ngx.arg[1]:lower()" $2;
但是它不起作用,因为只有在重写指令范围内才能访问$1
和$2
处理重定向的正确方法是什么?因此,以下是解决方案:
location ~* /old_url/(.*)/(.*).html {
set_by_lua $var1 "return ngx.arg[1]:upper()" $1;
set_by_lua $var2 "return ngx.arg[1]:upper()" $2;
return 301 "http://cdn.example.com/test/$var1 $var2.pdf";
}
使用位置
,而不是使用重写
匹配URL。然后可以在范围内访问$1
和$2
,并可以使用Lua进行修改