如何在Nginx中替换URL中的字符?

时间:2019-03-04 13:09:06

标签: nginx

在我的网址中,我有参数:

LAYERS=003100000806,002000000445,003100000813,003100000822,00310000080C

在nginx配置中,我得到了它:

if ($request_uri ~* LAYERS=([^&]*)) {
    set $layers $1;
}

但是现在我想将,替换为_,所以我想得到:

003100000806_002000000445_003100000813_003100000822_00310000080C

我找到了很多replace的示例,但它更改了一个字符或url单个部分。如何替换所有逗号?

我尝试过:

if ($layers ~* ([^,]*)){
        rewrite (.*),(.*) $1_$2 permanent;          
}

但是仍然要逗号。

1 个答案:

答案 0 :(得分:0)

LAYER参数的值可用作$arg_LAYERS变量。但是使用$args变量更容易实现此过程,该变量包含?之后的URI中的所有内容。

如果,的数量可变,则可以通过捕获$args之前和之后的,的内容来一次替换它们。

例如:

if ($args ~ ^(.+&|)(LAYERS=[^&]+),(.*)$) {
    return 301 $uri?$1$2_$3;
}