在我的网址中,我有参数:
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;
}
但是仍然要逗号。
答案 0 :(得分:0)
LAYER参数的值可用作$arg_LAYERS
变量。但是使用$args
变量更容易实现此过程,该变量包含?
之后的URI中的所有内容。
如果,
的数量可变,则可以通过捕获$args
之前和之后的,
的内容来一次替换它们。
例如:
if ($args ~ ^(.+&|)(LAYERS=[^&]+),(.*)$) {
return 301 $uri?$1$2_$3;
}