Laravel Glide не находит изображения в URL с расширением
Я использую Glide и следил за этим видео https://vimeo.com/118089742 которое в основном представляет собой пошаговое руководство по инструкциям на официальном сайте http://glide.thephpleague.com/
Вот мой поставщик услуг:
$this->app->singleton('League\Glide\Server', function ($app) {
return \League\Glide\ServerFactory::create([
'source' => public_path(),
'cache' => public_path(),
'source_path_prefix' => 'images/uploads',
'cache_path_prefix' => 'images/cache',
'base_url' => '/img/',
]);
});
И вот мой текущий маршрут:
Route::get('img/{path}', function (League\Glide\Server $server, Illuminate\Http\Request $request) {
$server->outputImage($request);
});
Но я сталкиваюсь с проблемами. Когда я захожу на url.com/img/test.png?h=100, это не работает. Глядя на инструменты Chrome Dev на странице, я получаю 404 за изображение (однако, оригинальное изображение появляется).
Я обнаружил, что если я переключаю свой маршрут на следующий и иду только по адресу url.com/img/test?h=100 (без расширения), то я получаю скользящее изображение, которое мне нужно:
Route::get('img/{path}', function (League\Glide\Server $server, Illuminate\Http\Request $request) {
$server->outputImage($request->path() . '.png', $request->all());
});
Однако, если я удаляю конкатенацию расширения и продолжаю просто:
Route::get('img/{path}', function (League\Glide\Server $server, Illuminate\Http\Request $request) {
$server->outputImage($request->path(), $request->all());
});
Затем вернитесь обратно на url.com/img/test.png?h=100, и снова произойдет сбой.
Видите ли вы что-то не так с тем, что я делаю, или есть объяснение, почему я не могу перейти непосредственно к пути изображения (с расширением)?
2 ответа
У меня та же проблема и перепробовал много вещей. Все URL, начинающиеся с /img/, являются изображениями, созданными Glide. Все в /assets/ являются статическими файлами. Я сдался и изменился
location ~* \.(?:jpg|jpeg|gif|png|ico|cur|gz|svg|svgz|mp4|ogg|ogv|webm|htc)$
в
location ~* ^/assets/.*\.(?:jpg|jpeg|gif|png|ico|cur|gz|svg|svgz|mp4|ogg|ogv|webm|htc)$
,
Надеюсь, у кого-то есть хорошее решение для этого!
Это была проблема кеширования. Не кэшируйте ваши изображения с помощью htaccess или nginx перед использованием Glide.