параметр маршрута содержит косую черту и точка не распознается на новом сервере - PullRequest
0 голосов
/ 04 ноября 2018

Я использовал пакет thephpleague / glide в своем приложении laravel для изменения размера изображений.

Я написал маршрут, подобный приведенному ниже, чтобы получить width, height и path изображения на сервере, а затем с помощью этого пакета изменить это изображение и вернуть его.

Route::get('/showImage/{w}/{h}/{src}', [
        'as'   => 'showImage',
        'uses' => function (League\Glide\Server $server, $w, $h, $src) {
            $server->outputImage($src, ['w' => $w, 'h' => $h, 'fit' => 'crop']);
        }
    ])->where('src', '.+');

Предположим, я запросил http://www.example.com/showImage/300/168/galleries/mypic.jpg URL. но в то время как galleries/mypic.jpg является правильным и существует на сервере, я получил 404 not found error.

Я использовал именно этот маршрут в других проектах, но на новом хосте я столкнулся с этой проблемой.

Я думаю, что проблема в параметре src, который может содержать знаки / и .. Потому что, когда я использую строку без каких-либо / и ., это работает и может получить доступ к параметру src.

1 Ответ

0 голосов
/ 04 ноября 2018

Избежать косой черты с помощью (.*):

Route::get('/showImage/{w}/{h}/{src}', [
            'as'   => 'showImage',
            'uses' => function (League\Glide\Server $server, $w, $h, $src) {
                $server->outputImage($src, ['w' => $w, 'h' => $h, 'fit' => 'crop']);
            }
        ])->where('src', '(.*)');

И запустить composer dump-autoload потом. Если у вас нет доступа к ssh, добавьте этот маршрут:

Route::get('/updateapp', function()
{
    system('composer dump-autoload');
    echo 'dump-autoload complete';
});

Если эта команда не работает, запустите composer dump-autoload локально, затем загрузите файлы с помощью ftp

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...