【问题标题】:nginx rewrite rule (convert segments to get paramters)nginx重写规则(将段转换为获取参数)
【发布时间】:2016-06-21 08:40:49
【问题描述】:

我需要

/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;
    }

【问题讨论】:

    标签: mod-rewrite nginx rules


    【解决方案1】:

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

    有关位置语法,请参阅this

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

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

    【讨论】:

    • 嗨,理查德,我们如何以相反的方式做同样的事情。我想将获取参数转换为段?
    • @AkshayDeshmukh 见this answer
    猜你喜欢
    • 2014-06-30
    • 2016-08-09
    • 2016-06-18
    • 2018-03-28
    • 2012-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多