У меня есть три папки со статическими файлами (приложения Angular): веб, логин, админ.
Я хочу служить:
web
папка, когда URL-адрес /*
login
когда URL /admin/*
и не вошлиadmin
когда URL /admin/*
и вошли.мой routes.php
:
// папка администратора Route :: get ('/ admin', ['before' => 'auth', function () { return File :: get (public_path (). '/admin/index.html'); }]); Route :: get ('/ admin / {slug}', ['before' => 'auth', функция ($ slug) { return File :: get (public_path (). '/ admin /'. $ slug); }]); // папка входа Route :: get ('/ admin', function () { return File :: get (public_path (). '/login/index.html'); }); Route :: get ('/ admin / {slug}', функция ($ slug) { return File :: get (public_path (). '/ login /'. $ slug); }); // веб-папка Route :: get ('/', function () { return File :: get (public_path (). '/web/index.html'); }); Route :: get ('/ {slug}', функция ($ slug) { return File :: get (public_path (). '/ web /'. $ slug); });
Проблемы:
/{slug}
не обслуживает файлы из подпапок./admin/
перенаправить меня на /login
,Как я могу решить предыдущие пункты?
Вы добавили один и тот же URL маршрута 2 раза. Стандарт Laravel берет один и пропускает другой. Поэтому первый админский маршрут выбран. Поэтому фильтр аутентификации всегда выполняется. В стандартном фильтре, который находится в файле 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]+');
Надеюсь это поможет!
Других решений пока нет …