删除不需要的参数

时间:2019-02-02 10:37:24

标签: nginx nginx-location

我正在尝试从下面的网址中删除参数“?status = OK”。

当前

https://example.com/download/d2e9cc4f-f7df-4ebd-a0e4-7836c8013075?status=OK

目标:

https://example.com/download/d2e9cc4f-f7df-4ebd-a0e4-7836c8013075

Nginx:

location /download/ {
    rewrite ^(/download/.*)?$ $1 permanent;
}

不幸的是,以上操作无效。

1 个答案:

答案 0 :(得分:1)

查询字符串不是locationrewrite语句用于测试正则表达式的规范化URI的一部分。

您可以使用if ($args) { ... }检查是否存在任何参数,或者仅使用status=检查是否存在if ($arg_status) { ... }参数。

例如:

location /download/ {
    if ($args) { return 301 $uri; }

    ...          # do something with the corrected URI
}

rewrite语句还能够使用rewrite ^(.*)$ $1? permanent删除查询字符串,但是return语句似乎更简单。关于if的使用,请参见this caution