Как направить все изображения из представлений и css для использования URL-адреса IMGIX в Laravel?

Итак, у меня есть проект laravel, который почти завершен, и мы просто перенесли все изображения в корзину S3 и подключили IMGIX к корзинам S3, поэтому все изображения обслуживаются с S3 через IMGIX, что также позволяет выполнять всевозможные настройки на рейс.

Однако изображения в CSS имеют относительные пути, например

.bg-image {
   background: url(/storage/icons/icon.svg);
}

И изображения в представлениях выглядят так:

<img class="icon" src="{{ asset('storage/icons/icon-white.svg') }}" />

Есть ли способ динамически добавить URL-адрес IMGIX (http://www.domain.imgix.net) перед всеми изображениями на сайте (просмотры + CSS), чтобы все они проходили через IMGIX?

2 ответа

попробуйте отредактировать маршруты/web.php

добавьте следующее

      Route::get('/images/{filename}', function ($filename) {
if (env(    'FILESYSTEM_DRIVER') === 's3') {
    $s3BucketUrl = env('MIX_S3_URL'); // Replace with your S3 bucket URL
    $s3ObjectUrl = $s3BucketUrl . '/images/' . $filename;
    return Redirect::to($s3ObjectUrl);
}
})->where('filename', '.*');

Согласно документации laravel, вы можете настроить хост URL ресурса, установив параметр ASSET_URL переменная в вашем проекте .envфайл. Например:

ASSET_URL=https://www.domain.imgix.net

Для более сложного варианта использования вы можете подумать о создании вспомогательного метода, который расширяет актив и использует клиентскую библиотеку imgix-php.

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