【问题标题】:How to Nginx rewrite and change capitalization of arguments?Nginx 如何重写和更改参数的大小写?
【发布时间】:2016-08-19 12:35:17
【问题描述】:

我需要执行 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 只能在重写指令范围内访问。

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

【问题讨论】:

    标签: nginx url-rewriting lua


    【解决方案1】:

    所以,这里是解决方案:

    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 匹配URL,而是使用location。那么$1$2在作用域内是可以访问的,可以用Lua修改。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-15
      • 1970-01-01
      • 2012-03-08
      相关资源
      最近更新 更多