web-dev-qa-db-ja.com

nginxは見つからない画像を表示します

ホットリンクされた画像がたくさんあります。これは問題ありませんが、URLの変更により存在しないものもあります。画像が要求され、画像が存在しない場合にのみ、imageshack「画像が見つかりませんエラー」の画像のようなものを表示することは可能ですか?

現在、404ページがありますが、それでも保持したいと思います。

「見つかりません」という簡単なjpg/gif画像を表示して、画像が見つからない場合にのみ表示できます。

正直、どこから始めたらいいのかわからない

私のパスは/ level1 /から/ level1/..../blah/oldpicture.jpgまで何でもかまいません。ほとんどの画像は、Gallery2によってurl_rewriteでレンダリングされるため、実際にはphpに移動します。

 location / {
                try_files $uri $uri /main.php?url=$1;
                #rewrite ^/(.+)$ /main.php?url=$1 last;
        }

また、これをphp fpmconfig部分で使用します

fastcgi_intercept_errors on; # to support 404s for PHP files not found

私はコーディングによってこれを試みることができましたが、それは2番目のオプションです。

2
Abhishek Dujari

場所に基づいてエラーページを変更できます。例えば:

location ~ \.(png|jpg)$ {
    error_page 404 /404.png;
}
10
mgorven

おそらく、ロケーションブロックを追加して、イメージに対してtry_filesを実行し、失敗したときに指定されたロケーションから書き換えます。このようなもの(テストされていません):

location ~* \.(png|jpg|gif) {
    try_files $uri $uri/ @noimage;
}
location @noimage {
    rewrite ^ http://yousite.com/noimage.png;
}
location / {
    try_files $uri $uri/ /main.php?url=$1;
}
location \.php {
    ...
}
2
chrskly