Nginx

如何在nginx中傳遞超過9個參數

  • March 7, 2019

這條規則

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它的作用下,它給了我在它末尾帶有 a的$1"0"任何值$1``0

我如何正確傳遞超過 9 個參數,或者如果不是 pssobile 傳遞超過 9 個來執行類似的操作

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

使用以下內容:

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,以便範例更短。

引用自:https://serverfault.com/questions/957131