Laravel Folio 10:如何直接访问public文件夹中的图片或文件?
解决Folio 10下
public/images文件直接访问404的问题 方案1:配置Folio排除/images路径
Folio默认会尝试解析所有URL为文件系统路由,导致/images请求被错误路由。通过在Folio初始化时添加排除规则,让Laravel接管静态文件处理:
在bootstrap/app.php的路由配置中,添加exclude('/images'):
use Laravel\Folio\Folio; return Application::configure(basePath: dirname(__DIR__)) ->withRouting( // 保留原有web、commands等路由配置 then: function () { Folio::path(base_path('resources/views/pages')) ->exclude('/images'); // 排除images前缀的请求,交由Laravel处理静态文件 }, ) // 保留原有中间件、异常配置 ->create();
配置后,Folio会忽略所有/images开头的请求,Laravel会自动从public/images目录查找对应文件并返回。
方案2:手动添加路由处理静态资源
如果方案1不生效,可在routes/web.php中添加显式路由,优先匹配/images请求:
use Illuminate\Support\Facades\Route; Route::get('/images/{path}', function (string $path) { $file = public_path("images/{$path}"); if (!file_exists($file)) { abort(404); } return response()->file($file); })->where('path', '.*');
->where('path', '.*')允许匹配包含子目录的路径(如/images/photos/shot.jpg)- 该路由会优先于Folio的文件系统路由执行,确保静态资源被正确返回
关键验证步骤
- 确保
public/images目录及文件的服务器读取权限正常 - 执行
php artisan route:clear清除路由缓存,避免旧规则干扰 - 删除或重命名
resources/views/pages下可能存在的images.blade.php或images目录,防止Folio误解析
内容的提问来源于stack exchange,提问作者Jay Bienvenu
相关产品推荐
相关产品推荐

