[英]How to serve multiple static folders in Laravel?
我有三个带静态文件的文件夹(Angular apps):web,login,admin。
我想服务:
/*
时的web
文件夹 login
时,URL是/admin/*
和未登录 admin
为/admin/*
并记录时为/admin/*
。 我的routes.php
:
// admin folder Route::get('/admin', ['before' => 'auth', function() { return File::get(public_path() . '/admin/index.html'); }]); Route::get('/admin/{slug}', ['before' => 'auth', function($slug) { return File::get(public_path() . '/admin/' . $slug); }]); //login folder Route::get('/admin', function() { return File::get(public_path() . '/login/index.html'); }); Route::get('/admin/{slug}', function($slug) { return File::get(public_path() . '/login/' . $slug); }); // web folder Route::get('/', function() { return File::get(public_path() . '/web/index.html'); }); Route::get('/{slug}', function($slug) { return File::get(public_path() . '/web/' . $slug); });
问题:
/{slug}
不提供子文件夹中的文件。 /admin/
将我重定向到/login
。 我怎样才能解决以前的问题?
您添加了相同的路由网址2次。 Laravel标准采用一个并跳过另一个。 因此,采用第一个管理路由。 因此,auth过滤器始终有效。 在标准过滤器(位于filters.php文件中)中,未登录的用户被重定向到登录。 因此,您被重定向到登录。 你可以通过改变过滤器或删除过滤器来解决这个问题,并在你的路线中使用它:
Route::get('/admin',function() { if(Auth::check()) return File::get(public_path() . '/admin/index.html'); return File::get(public_path() . '/login/index.html'); }); Route::get('/admin/{slug}',function($slug) { if(Auth::check()) return File::get(public_path() . '/admin/' . $slug); return File::get(public_path() . '/login/' . $slug); });
->where('slug', '[A-Za-z]+');
希望这可以帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.