I asked this question on stackoverflow, but wasn’t getting any love
there, and then realised I should go to the source!
I managed to get nginx (1.0.14) compiled with the latest PCRE (8.30),
changed the rewrite rule to use UTF8, but it still fails in some cases
with unicode characters.
This works fine with images without unicode, but fails when the filename
contains unicode characters.
so /imgthumb/src=/wp-content/uploads/8姉妹の古いマトリョーシカ.jpg&h=121&w=137&zc=1 fails
but /imgthumb/src=/wp-content/uploads/MOD0005.jpg&h=121&w=137&zc=1 works fine.
On Apache using .htaccess rewrite rule, it works with both
RewriteRule ^/imgthumb/(.*)$ /timthumb.php?$1 [L]
I noticed that the problem seems to stem from the fact that the PHP
script gets only one parameter (src) into the $_GET array with nginx,
but with apache rewrite it’s broken down to different parameters…
Is my nginx rewrite rule wrong? Is there a way to make this work?
On Tue, Mar 20, 2012 at 12:06:36PM -0400, yoavaner wrote:
fails
but with apache rewrite it’s broken down to different parameters…
This a problem in rewrite handling, it inconsistently escapes $1
in some cases but not in others. And it’s not really related to
unicode, just any escaped char in uri will be enough to trigger
escaping.
This needs fixing.
Is my nginx rewrite rule wrong? Is there a way to make this work?
This a problem in rewrite handling, it inconsistently escapes $1
in some cases but not in others. And it’s not really related to
unicode, just any escaped char in uri will be enough to trigger
escaping.
This needs fixing.
Good to know. Thanks.
Is my nginx rewrite rule wrong? Is there a way to make this work?
Avoid using rewrites.
Or avoid using nginx, but that won’t be an ideal solution obviously.
Hope that this gets fixed some time…
Thanks Valentin. Your suggestion sounds promising. However, I’m sorry,
but I’m not that familiar with the nginx configuration rules. How do I
point it in the location directive to my php script (which is
timthumb.php) ?
I tried something like this, but it doesn’t seem to work… I’m getting
an empty response unfortunately.