Laravel 5 Route Group и Basic (/) GET Route внутри группы

Я работаю над веб-приложением Laravel 5.0 с панелью администратора. Я столкнулся с проблемой с Маршрутами. Я группировал маршруты администратора, как показано ниже,

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]');
});

Теперь, когда я получаю доступ к

http://domain.com/admin

Я получаю "Эта веб-страница имеет цикл переадресации" в хроме. Возможно ли это в группе маршрутов? если не так, как это сделать с .htaccess?

UPDATE

Ниже приведен метод 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>

У меня есть почти 60-70 маршрутов, и все они работают без index.php accept в приведенном выше сценарии мне нужно index.php.

Ответы

Ответ 1

Проблема заключается в том, что промежуточное ПО 'user.admin' всегда работает, даже на '/admin/login'. Поэтому, когда вы получаете доступ к "/admin", вы перенаправляетесь на "/admin/login", а затем промежуточное программное обеспечение перенаправляет вас снова на "/admin/login", и это происходит навсегда. Это причина, по которой вы получаете "Эта веб-страница имеет цикл перенаправления".

Чтобы сделать это, вы должны исключить "admin/login" из своего промежуточного программного обеспечения "user.admin".

Ответ 2

Вы можете иметь это без какого-либо префикса, просто добавьте маршрут "admin", который выполняет перенаправление:

// responds to http://domain.com/admin
Route::get('admin', function(){
  if (//User not authenticated)
    return redirect()->to('admin/login');
  else
    //show admin;
});

Ответ 3

Проблема может быть вызвана папкой с именем admin в общедоступном каталоге.