You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Laravel Voyager配置两个不同的后台管理URL?

如何给Laravel Voyager配置两个独立的后台管理URL

直接重复调用Voyager::routes()确实会出现重定向冲突的问题——因为Voyager内部的路由名称、重定向逻辑、菜单链接都是默认绑定到admin前缀的,两次注册会导致路由名称重复,系统分不清该用哪个前缀跳转。下面是亲测有效的解决方案:

步骤1:复制并修改Voyager路由文件

Voyager的默认路由在vendor/tcg/voyager/routes/voyager.php,我们需要复制两份出来,分别适配两个后台前缀:

  • 在项目根目录的routes文件夹下创建voyager-admin1.php和voyager-admin2.php
  • 把原路由文件内容分别粘贴到这两个文件里,然后做两处修改:
    • 把路由组的prefix分别改成'admin-1'和'admin-2'
    • 把所有路由的name前缀替换成admin1.和admin2.(比如原route('admin.dashboard')改成route('admin1.dashboard'))

步骤2:加载自定义路由

在routes/web.php里替换原来的Voyager::routes()调用,改成加载我们的自定义路由:

require base_path('routes/voyager-admin1.php');
require base_path('routes/voyager-admin2.php');

步骤3:自定义登录控制器,修复重定向逻辑

Voyager默认登录后会跳转到admin.dashboard路由,我们需要给两个后台分别定制登录控制器:

  1. 在app/Http/Controllers/Voyager下创建Admin1LoginController.php:
<?php

namespace App\Http\Controllers\Voyager;

use TCG\Voyager\Http\Controllers\VoyagerLoginController as BaseLoginController;

class Admin1LoginController extends BaseLoginController
{
    protected function redirectPath()
    {
        // 登录后跳转到admin1的仪表盘
        return route('admin1.dashboard');
    }
}
  1. 同样创建Admin2LoginController.php,把redirectPath里的路由改成admin2.dashboard
  2. 回到对应的路由文件,把登录路由指向自定义控制器:
    • 比如在voyager-admin1.php里,把原登录路由替换成:
      Route::get('login', [\App\Http\Controllers\Voyager\Admin1LoginController::class, 'showLoginForm'])->name('admin1.login');
      Route::post('login', [\App\Http\Controllers\Voyager\Admin1LoginController::class, 'login'])->name('admin1.login.post');
      
    • admin2的路由文件做同样修改,指向Admin2LoginController

步骤4:调整菜单链接

Voyager后台的菜单默认使用admin前缀的路由,需要手动修改菜单链接:

  • 登录任意一个后台,进入「菜单管理」
  • 把每个菜单项的链接改成对应后台的路由(比如admin1的仪表盘链接填{{ route('admin1.dashboard') }},或者直接写/admin-1/dashboard)

可选:分离后台用户权限(如果需要)

如果希望不同用户只能访问对应后台,可以修改Voyager的admin中间件:

  1. 创建自定义中间件CheckAdmin1Access和CheckAdmin2Access
  2. 在中间件里检查当前用户是否属于指定的管理员组(比如给用户加admin_type字段,区分admin1/admin2)
  3. 在对应的路由组里替换默认的admin中间件为自定义中间件

这样配置完成后,/admin-1和/admin-2就能独立工作,不会再出现互相重定向的问题啦。

内容的提问来源于stack exchange,提问作者Ganesha Ampuh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:29:51