【问题标题】:nginx redirect based on parameter id from uringinx 根据 uri 中的参数 id 重定向
【发布时间】:2020-09-07 07:25:34
【问题描述】:

需要根据 personId uri 参数进行重定向。

https://server.com/de/prints/?personId=1 重定向到https://anotherserver.com/dir1/dir2/dir3/dir4/dir5/the-result?statusId=1&personId=1

需要对每个 personId 值都这样做,所以基本上如果请求是:https://server.com/de/prints/?personId=2 重定向到https://anotherserver.com/dir1/dir2/dir3/dir4/dir5/the-result?statusId=1&personId=2

我尝试了以下方法,但它不起作用:

location ~* ^/de/prints? {
    if ($args ~* "personId=*") {
      rewrite ^.*$ https://anotherserver.com/dir1/dir2/dir3/dir4/dir5/the-result?statusId=1&personId=$1 redirect;
    }
}

【问题讨论】:

    标签: regex nginx redirect location


    【解决方案1】:

    为了在您的 URL 中使用 $1,您需要使用括号(捕获组)捕获原始 URL 中人员的 Id。

    类似于.*[&?]personId=([0-9]+) 而不是^.*$

    这是一个演示:https://regex101.com/r/yms4Oi/1

    【讨论】:

    【解决方案2】:

    我设法使用以下方法使其工作:

    location ~ /de/prints/ {
             if ($args ~* "personId=(.*)") {
                 return 302 https://anotherserver.com/dir1/dir2/dir3/dir4/dir5/the-result?statusId=1&personId=$1;
             }
        }
    

    【讨论】:

      猜你喜欢
      • 2014-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-17
      • 2016-04-16
      • 1970-01-01
      • 1970-01-01
      • 2014-03-08
      相关资源
      最近更新 更多