Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/nginx/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Nginx 如何重写和更改参数的大小写?_Nginx_Url Rewriting_Lua - Fatal编程技术网

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

我需要执行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


处理重定向的正确方法是什么?

因此,以下是解决方案:

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进行修改