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.

Другие вопросы по тегам