我有三个带静态文件的文件夹(Angular apps):web,login,admin。
我想服务:
web
时,/*
文件夹
当网址为login
且未记录/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
。我如何解决以前的问题?
答案 0 :(得分:3)
您已添加相同的路由网址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]+');
希望这有帮助!