php - Laravel 5 路由组和组内的 Basic(/) GET 路由

标签 php laravel-5 laravel-routing

我正在使用管理面板开发 Laravel 5.0 Web 应用程序。 我正面临路线问题。我有如下所示的分组管理路由,

Route::group(['prefix' => 'admin', 'namespace' => 'Admin', 'middleware' => ['user.admin']], function () {
    Route::get('login', [
        'as' => 'admin.login',
        'uses' => 'AuthController@getLogin'
    ]);
    Route::get('logout', [
        'as' => 'admin.login',
        'uses' => 'AuthController@getLogout'
    ]);
    Route::post('login', 'AuthController@postLogin');
});

Route::group(['prefix' => 'admin', 'namespace' => 'Admin', 'middleware' => ['user.admin','auth', 'admin.acl']], function () {

    Route::get('dashboard', [
        'as'         => 'admin.dashboard',
        'uses'       => 'DashboardController@index',
        'permission' => 'admin_dashboard'
    ]);

    //Image Handler
    Route::get('images/{size}/{name?}',[
        'as'   => 'admin.images',
        'uses' => 'ImagesController@images'
    ]);

    Route::resource('user', 'UsersController');

    ........   

});

一切正常。我可以毫无问题地使用以下内容,

http://domain.com/admin/dashboard
http://domain.com/admin/login

但是我想要

http://domain.com/admin

显示登录页面或重定向到

http://domain.com/admin/login

所以我把我的第一个组改成了following,

Route::group(['prefix' => 'admin', 'namespace' => 'Admin', 'middleware' => ['user.admin']], function () {

    Route::get('/', [        
        'uses' => 'AuthController@getLogin'
    ]);
    Route::get('login', [
        'as' => 'admin.login',
        'uses' => 'AuthController@getLogin'
    ]);
    Route::get('logout', [
        'as' => 'admin.login',
        'uses' => 'AuthController@getLogout'
    ]);
    Route::post('login', 'AuthController@postLogin');
});

现在当我访问

http://domain.com/admin

我在 Chrome 中收到“此网页有重定向循环”。是否可以在 Route 组中?如果不是如何使用 .htaccess 做到这一点?

更新

下面是一个中间件user.adminhandle方法。除了更改身份验证的基础模型外,什么都不做。

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

更新

这太棒了,下面的作品

http://domain.com/index.php/admin

我没有触及下面的 laravel 5.0 提供的默认 .htaccess

<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

最佳答案

问题是“user.admin”中间件始终在运行,即使在“/admin/login”上也是如此。因此,当您访问“/admin”时,您将被重定向到“/admin/login”,然后中间件再次将您重定向到“/admin/login”,这种情况会永远发生。这就是您收到“此网页有重定向循环”的原因。

为了使其正常工作,您必须将“admin/login”排除在使用“user.admin”中间件之外。

关于php - Laravel 5 路由组和组内的 Basic(/) GET 路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30871258/

相关文章:

PHP undefined variable mysqli连接

php - POST 表单上的 Laravel MethodNotAllowedHttpException

php - Laravel 5 - 在身份验证不起作用之前

mysql - Laravel - Mysql 到 JSON

javascript - 将 JS 集成到 JS 的简洁方法

php - 无法使用 Lapack : Class 'Lapack' not found in

Internet Explorer 中的 PHP session 数据更改

php - 在 Laravel 中将 Public 添加到 Assets 路径

laravel-5 - 工匠新鲜命令

php - 获取有关数据透视列的详细信息 [Laravel 5]