我需要执行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 "return ngx.arg[1]:lower()" $2;
但它不起作用,因为$1
和$2
只能在重写指令范围内访问。
处理重定向的正确方法是什么?
答案 0 :(得分: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";
}
不使用rewrite
匹配网址,而是使用location
。然后可以在范围内访问$1
和$2
,并可以使用Lua进行修改。