nginx:[出现]未知的“ 1”变量-在变量编号周围使用花括号时

时间:2019-03-07 00:31:21

标签: php regex nginx url-rewriting

这条规则

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;
}

我试图传递9个参数的限制,所以我在变量编号周围使用了花括号,但给了我这个错误消息

nginx: [emerge] unknown "1" variable

1 个答案:

答案 0 :(得分:0)

如果在某些表达式中使用某些字符(};),则需要将整个表达式用单引号或双引号引起来。

但是,这个问题与Nginx中只有前9个捕获可用作数字捕获的事实有关。

但是您可以使用命名捕获(即使仅用于第10个捕获)。

例如:

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

命名捕获(?<a>.+)将捕获放入变量$a中。