如何在 nginx 中传递超过 9 个参数

如何在 nginx 中传递超过 9 个参数

这条规则

location / {
    rewrite ^/(.+)/(.+)/(.+)/(.+)/(.+)/(.+)/(.+)/(.+)/(.+)/(.+)$ /index.php?param1=$1&param2=$2&param3=$3&param4=$4&param5=$5&param6=$6&param7=$7&param8=$8&param9=$9&param10=$10 last;
}

$10的功能是$1"0",所以它给我任何以 a结尾的$10

我如何正确传递超过 9 个参数,或者如果不能传递超过 9 个参数,可以执行类似以下操作

location / {
    rewrite ^/(.+) /index.php?param1=$1
    location ^/.+ {
        rewrite ^/.+/(.+) /index.php?param2=$1
            to $3 -> $4 -> $5 -> $6 -> $7 -> $8 -> $9 -> $10
    }
}

答案1

使用以下内容:

location / {
rewrite ^/(?.+)/(.+)/(.+)/(.+)/(.+)/(.+)/(.+)/(.+)/(.+)/(?<param10>.+)$ /index.php?param1=$1&param2=$2&param3=$3&param4=$4&param5=$5&param6=$6&param7=$7&param8=$8&param9=$9&param10=$param10 last;

}

?<argname>符号告诉 nginx 将正则表达式捕获到$argname变量中。为了保持一致性,您可以对所有变量使用相同的符号。我只替换了参数 10,以便示例更短。

相关内容