Как направить все изображения из представлений и 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.