nginx重写规则(转换段以获取参数)

时间:2016-03-07 17:12:23

标签: mod-rewrite nginx rules

我需要

/secure/token/timestamp/path/to/the/resource/

以这种格式重写:

/s/path/to/the/resource/?st=token&e=timestamp

我要做的是:

location /secure/(?<token>)/(?<timestamp>)/(?<path>) {
    rewrite ^ /s/$path/?st=$token&e=$timestamp
}

但显然不起作用。这种语法似乎不正确。如何在nginx规则中使用url这样玩?

编辑: 现在尝试这样的事情:同样的结果:

     location /secure/(.*)/(.*)/(.*) {
         rewrite ^ /s/$3?st=$1token&e=$2timestamp;
    }

1 个答案:

答案 0 :(得分:1)

你有多个问题。您将前缀位置与正则表达式位置混淆。您的命名捕获不包含任何内容。而且您的数字捕获可能过于宽泛。

请参阅this了解位置语法。

您应该使用前缀位置,然后在重写中捕获:

location /secure/ {
    rewrite ^/secure/([^/]*)/([^/]*)/(.*)$ /s/$3?st=$1&e=$2 last;
}