Я работаю над веб-приложением Laravel 5.0 с панелью администратора. У меня проблема с маршрутами. Я группировал маршруты администратора, как показано ниже,Laravel 5 Route Group и Basic (/) GET Route in group
Route::group(['prefix' => 'admin', 'namespace' => 'Admin', 'middleware' => ['user.admin']], function() {
Route::get('login', [
'as' => 'admin.login',
'uses' => '[email protected]'
]);
Route::get('logout', [
'as' => 'admin.login',
'uses' => '[email protected]'
]);
Route::post('login', '[email protected]');
});
Route::group(['prefix' => 'admin', 'namespace' => 'Admin', 'middleware' => ['user.admin','auth', 'admin.acl']], function() {
Route::get('dashboard', [
'as' => 'admin.dashboard',
'uses' => '[email protected]',
'permission' => 'admin_dashboard'
]);
//Image Handler
Route::get('images/{size}/{name?}',[
'as' => 'admin.images',
'uses' => '[email protected]'
]);
Route::resource('user', 'UsersController');
........
});
Все работает нормально. Я могу использовать следующее без каких-либо проблем,
http://domain.com/admin/dashboard
http://domain.com/admin/login
Но я хочу
http://domain.com/admin
, чтобы отобразить страницу входа или перенаправлять
http://domain.com/admin/login
поэтому я изменил свою первую группу к следующей,
Route::group(['prefix' => 'admin', 'namespace' => 'Admin', 'middleware' => ['user.admin']], function() {
Route::get('/', [
'uses' => '[email protected]'
]);
Route::get('login', [
'as' => 'admin.login',
'uses' => '[email protected]'
]);
Route::get('logout', [
'as' => 'admin.login',
'uses' => '[email protected]'
]);
Route::post('login', '[email protected]');
});
Now Whe n Я обращаюсь
http://domain.com/admin
Я получаю «Эта веб-страница имеет петлю перенаправления» в хроме. Возможно ли это в группе маршрутов? если не так, как это сделать с .htaccess?
ОБНОВЛЕНИЕ
Ниже приведен метод handle
из промежуточного user.admin
. Что не делает ничего, кроме изменения базовой модели для аутентификации.
public function handle($request, Closure $next)
{
\Config::set('auth.table', 'admins');
\Config::set('auth.model', 'App\DB\Admin\Admin');
\Config::set('session.cookie', 'admin_session');
\Config::set('session.path', '/admin/');
return $next($request);
}
UPDATE
Это удивительно, после работы
http://domain.com/index.php/admin
Я не прикоснулся по умолчанию .htaccess
поставляется Laravel 5.0, которая находится ниже,
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule^index.php [L]
</IfModule>
I имеют почти 60-70 маршрутов, и все они работают без index.php
принять в этом сценарии мне нужно index.php
.
Пожалуйста, разместите свое промежуточное программное обеспечение – Szenis
@ Szenis- Спасибо. Я обновил свой ответ. –
Можете ли вы попытаться объявить маршрут '/' последним? Интересно, в каком порядке оцениваются маршруты. – Grasshopper