У меня есть папка с изображениями в example.com/img/
и в то же время у меня есть маршрут
get('img/{path}', 'ImageController@output');
Но когда я пытаюсь example.com/img/someimagepath
и если имя изображения someimagepath
Я получаю это изображение вместо стрельбы по маршруту выше.
Есть ли способ сделать это пожарным маршрутом вместо запроса файла?
Если быть точным, я использую https://github.com/thephpleague/glide Библиотека Glide
Это потому, что сервер ищет в public
папка, найти img
каталог, и обслуживая изображение оттуда вместо загрузки public/index.php
, Если index.php
не загружен, laravel не загружен, поэтому маршруты не будут работать.
Переименуйте папку в общедоступном каталоге или переименуйте свой маршрут. Вы не можете иметь их оба ссылки img
Я бы сохранил каталог и переименовал ваш маршрут:
get('images/{path}', 'ImageController@output');
или, возможно, префикс ваших маршрутов, если вам действительно нравится img
как сегмент:
get('app/img/{path}', 'ImageController@output');
По сути, ваши маршруты не могут идти по какому-либо пути public
, Сервер знает, как загрузить laravel, если он не может найти каталог или файл в public
который соответствует URI, он загружает index.php
, Если он найдет каталог или путь к файлу, соответствующий URI, он будет использовать его вместо этого.
От public\.htaccess
, В основном, если запрос не соответствует файлу или каталогу, загрузите index.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
Других решений пока нет …