这条规则
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;
}
它$10
的功能是$1"0"
,所以它给我任何以 a结尾的$1
值0
我如何正确传递超过 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¶m2=$2¶m3=$3¶m4=$4¶m5=$5¶m6=$6¶m7=$7¶m8=$8¶m9=$9¶m10=$param10 last;
}
该?<argname>
符号告诉 nginx 将正则表达式捕获到$argname
变量中。为了保持一致性,您可以对所有变量使用相同的符号。我只替换了参数 10,以便示例更短。