2017-04-03 16 views
1

以下のエラーが発生しています。すべてのエラーは、エラーが発生している場所に実際に存在しないイメージを指しています。それらはNginxで書き換えられますApacheから変換されました。Nginx:イメージの書き換えルールが正しくありません

すべてがApacheでうまくいきました。画像が表示されていないことをNginxに切り替えただけです。他のすべての書き換えルールはすべてうまく動作していますが、画像は壊れていますか?

エラー

2017/04/02 23:15:16 [error] 27629#0: *6 open() "/var/www/html/media/images/blog/10_1.png" failed (2: No such file or directory), client: xxx.xxx.xxx.xxx, server: www.website.com, request: "GET /media/images/blog/10_1.png HTTP/1.1", host: "www.website.com", referrer: "https://www.website.com/blog/"

Apacheの書き換えルール:

## Images 
RewriteRule ^media/images/([^/]+)/([^/]+)_([^-]+)_([^-]+)\.png$ /img.php?prefix=$1&refId=$2&thumb=$3&iid=$4 [L] 
RewriteRule ^media/images/([^/]+)/([^/]+)_([^-]+)\.png$ /img.php?prefix=$1&refId=$2&thumb=$3 [L] 

## Blog Pages 
RewriteRule ^blog/$ /?action=blog [L] 
RewriteRule ^blog/([a-zA-Z0-9-]+)/$ /?action=blog&category=$1 [L] 
RewriteRule ^blog/([a-zA-Z0-9-]+)/([0-9]+)-([a-zA-Z0-9-]+)/$ /?action=blog&category=$1&id=$2&title=$3 [L] 

nginxの書き換えルール

location /media { 
    rewrite ^/media/images/([^/]+)/([^/]+)_([^-]+)_([^-]+)\.png$ /img.php?prefix=$1&refId=$2&thumb=$3&iid=$4 last; 
    rewrite ^/media/images/([^/]+)/([^/]+)_([^-]+)\.png$ /img.php?prefix=$1&refId=$2&thumb=$3 last; 
} 
location /blog { 
    rewrite ^/blog/$ /?action=blog last; 
    rewrite ^/blog/([a-zA-Z0-9-]+)/$ /?action=blog&category=$1 last; 
    rewrite ^/blog/([a-zA-Z0-9-]+)/([0-9]+)-([a-zA-Z0-9-]+)/$ /?action=blog&category=$1&id=$2&title=$3 last; 
} 

修正

location ^~ /media/images { 
    rewrite ^/media/images/([^/]+)/([^/]+)_([^-]+)_([^-]+)\.png$ /img.php?prefix=$1&refId=$2&thumb=$3&iid=$4 last; 
    rewrite ^/media/images/([^/]+)/([^/]+)_([^-]+)\.png$ /img.php?prefix=$1&refId=$2&thumb=$3 last; 
} 
location /blog/ { 
    rewrite ^/blog/$ /?action=blog last; 
    rewrite ^/blog/([a-zA-Z0-9-]+)/$ /?action=blog&category=$1 last; 
    rewrite ^/blog/([a-zA-Z0-9-]+)/([0-9]+)-([a-zA-Z0-9-]+)/$ /?action=blog&category=$1&id=$2&title=$3 last; 
} 
+0

ロケーションプレフィックス 'location/media /'に '/'を追加し、ファイル名には正確な正規表現を追加します(例: '^/media/images /([^ /] +)/(\ d +)_(\ d +)\)。 png $ ' – Deadooshka

答えて

1

おそらく.pngで終わる任意のURIに一致するコンフィギュレーションファイルに矛盾locationブロックを持っています。

修飾子^~を追加することで、location /mediaブロックの正規表現ロケーションブロックよりも優先順位を高くすることができます。例えば

location ^~ /media { 
    rewrite ^/media/images/([^/]+)/([^/]+)_([^-]+)_([^-]+)\.png$ /img.php?prefix=$1&refId=$2&thumb=$3&iid=$4 last; 
    rewrite ^/media/images/([^/]+)/([^/]+)_([^-]+)\.png$ /img.php?prefix=$1&refId=$2&thumb=$3 last; 
} 
location ^~ /blog { 
    rewrite ^/blog/$ /?action=blog last; 
    rewrite ^/blog/([a-zA-Z0-9-]+)/$ /?action=blog&category=$1 last; 
    rewrite ^/blog/([a-zA-Z0-9-]+)/([0-9]+)-([a-zA-Z0-9-]+)/$ /?action=blog&category=$1&id=$2&title=$3 last; 
} 

は、より多くのためにthis documentを参照してください。

+0

ありがとうございました。正しい方向に私を指摘してくれました。私の問題を私のために働いた修正で更新しました。 – llanato

関連する問題