réécrire la règle en échec avec les URL unicode sur nginx avec pcre 8.3

J’ai un problème similaire à celui décrit sur cette question . Cependant, j’ai réussi à faire comstackr nginx (1.0.14) avec le dernier PCRE (8.30), à modifier la règle de réécriture pour utiliser UTF8, mais cela échoue toujours.

Ma règle de réécriture est

location / { try_files $uri $uri/ /index.php; rewrite "(*UTF8)^/imgthumb/(.*)$" /timthumb.php?$1 last; } 

Cela fonctionne bien avec des images sans unicode, mais échoue lorsque le nom de fichier contient des caractères Unicode.

donc /imgthumb/src=/wp-content/uploads/8姉妹の古いマトリョーシカ.jpg&h=121&w=137&zc=1 échoue

mais /imgthumb/src=/wp-content/uploads/MOD0005.jpg&h=121&w=137&zc=1 fonctionne /imgthumb/src=/wp-content/uploads/MOD0005.jpg&h=121&w=137&zc=1 .

Sur Apache utilisant la règle de réécriture .htaccess, cela fonctionne avec les deux

RewriteRule ^/imgthumb/(.*)$ /timthumb.php?$1 [L]

Est-ce que ma règle de réécriture nginx est incorrecte? Est-il possible de faire ce travail?

UPDATE: J’ai remarqué que le problème semble provenir du fait que le script PHP n’utilise qu’un seul paramètre (src) dans le tableau $_GET avec nginx, mais avec apache réécrit, il est divisé en différents parameters …

La solution a finalement été fournie par Valentin V. Bartenev sur le forum nginx après avoir posté la même question.

Remplacement de la règle de réécriture avec cet extrait a fait ce travail!

  location ~ (*UTF8)^/imgthumb/(.*)$ { fastcgi_pass unix:/var/spool/phpfpm.sock; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root/timthumb.php; fastcgi_param SCRIPT_NAME /timthumb.php; fastcgi_param QUERY_STRING $1; }