2012-03-18 21 views
3

the one described on this questionと同様の問題が発生しています。しかし、最新のPCRE(8.30)でコンパイルされたnginx(1.0.14)を入手し、書き換えルールをUTF8を使用するように変更しましたが、それでも失敗します。pcreとnginxのユニコードURLで書き換えルールが失敗する8.3

私の書き換えルールは

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

これはユニコードない画像と正常に動作しますが、ファイル名にUnicode文字が含まれている場合に失敗しています。

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

が、罰金を作品/imgthumb/src=/wp-content/uploads/MOD0005.jpg&h=121&w=137&zc=1を失敗しました。 Apacheのオン

.htaccessの書き換えルールを使用して、それが

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

の両方で動作しますが、間違った私のnginxの書き換えルールですか?この仕事をする方法はありますか?

UPDATE: 私は問題はPHPスクリプトがnginxので$_GET配列に一つだけのパラメータ(SRC)を取得しているという事実に由来しているようだということに気づいたのですが、Apacheで、それが異なるパラメータにダウン壊れて書き直し...

答えて

3

私はそこで同じ質問を投稿した後、解決策は最終的にprovided by Valentin V. Bartenev on the nginx forumでした。

書き換えルールをこのスニペットに置き換えると、この作業ができました。

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; 
    } 
+1

私は大切なことを追加したい:あなたは場所の正規表現で(* UTF8)を入れていない場合、あなたはあなたのリライトに内側の正規表現することを置く、します*ありません*作業​​。それは助けることができる。 – StormByte

関連する問題