这条规则
location / {
rewrite ^/(.+)/(.+)/(.+)/(.+)/(.+)/(.+)/(.+)/(.+)/(.+)/(.+)$ /index.php?param1=${1}¶m2=${2}¶m3=${3}¶m4=${4}¶m5=${5}¶m6=${6}¶m7=${7}¶m8=${8}¶m9=${9}¶m10=${10} last;
}
我试图传递9个参数的限制,所以我在变量编号周围使用了花括号,但给了我这个错误消息
nginx: [emerge] unknown "1" variable
答案 0 :(得分:0)
如果在某些表达式中使用某些字符(}
或;
),则需要将整个表达式用单引号或双引号引起来。
但是,这个问题与Nginx中只有前9个捕获可用作数字捕获的事实有关。
但是您可以使用命名捕获(即使仅用于第10个捕获)。
例如:
rewrite ^/(.+)/(.+)/(.+)/(.+)/(.+)/(.+)/(.+)/(.+)/(.+)/(?<a>.+)$
/index.php?param1=$1¶m2=$2¶m3=$3¶m4=$4¶m5=$5¶m6=$6¶m7=$7¶m8=$8¶m9=$9¶m10=$a
last;
命名捕获(?<a>.+)
将捕获放入变量$a
中。