我需要
/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;
}
答案 0 :(得分:1)
你有多个问题。您将前缀位置与正则表达式位置混淆。您的命名捕获不包含任何内容。而且您的数字捕获可能过于宽泛。
请参阅this了解位置语法。
您应该使用前缀位置,然后在重写中捕获:
location /secure/ {
rewrite ^/secure/([^/]*)/([^/]*)/(.*)$ /s/$3?st=$1&e=$2 last;
}