该应用程序将图像存储在Laravel 7上的storage / app / protected / images目录中的各个目录中。我可以在本地主机上显示从这些目录中检索到的图像,但是没有问题,但是当我移到暂存台时,我注意到每个即使图像显示在浏览器中,请求也会返回404。
我已经检查了后端,并且后端中的所有图像(管理员)都存在相同的问题。
图像URL结构很简单:example.com/images/slider/image-name.png
这里是我的ImageViewController
:
namespace App\Http\Controllers\Client;
use App\Exceptions\ErrorPageException;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Storage;
class ImageViewController extends Controller
{
public function getMainImage($name)
{
if(file_exists(storage_path('app/protected').'/images/'.$name)){
$image = storage_path('app/protected').'/images/'.$name;
}else{
throw new ErrorPageException(404);
}
return response()->file($image);
}
public function getImage($type, $name)
{
if(file_exists(storage_path('app/protected').'/images/'.$type.'/'.$name)){
$image = storage_path('app/protected').'/images/'.$type.'/'.$name;
}else{
throw new ErrorPageException(404);
}
return response()->file($image);
}
}
这里是我的路线:
Route::get('images/{name}', 'Client\ImageViewController@getMainImage');
Route::get('images/{type}/{name}', 'Client\ImageViewController@getImage');
我似乎无法自行解决问题。
请帮助!
已解决!
该问题在包含NGINX静态文件缓存指令之后出现。
我已经改变了方法,现在一切正常!
这里他们适合我的情况下的任何人:
# browser caching of static assets
location ~ /\.(jpg|jpeg|gif|png|ico|cur|gz|svg|svgz|mp4|ogg|ogv|webm|htc)$ {
expires 30d;
add_header Pragma public;
add_header Cache-Control "public";
}
# CSS and Javascript
location ~* \.(?:css|js)$ {
expires 1y;
access_log off;
add_header Cache-Control "public";
}
所有这些代码都在server { ... }
内部