nginx 显示未找到的图像

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 fpm 配置部分使用它

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

我可以通过编码来尝试这一点,但这是第二种选择。

答案1

你可以根据位置更改错误页面。例如:

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

答案2

也许可以添加一个位置块来对图像执行 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 {
    ...
}

相关内容