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

Hostinger部署后路由跳转异常问题求助

Hostinger部署后登录路由异常:用户/管理员路由跳转错误、侧边栏链接重定向首页

问题概述

部署Laravel项目到Hostinger后出现以下异常:

  • 未登录状态下,首页、关于页、联系页、登录/注册页跳转完全正常
  • 登录后异常表现:
    • 普通用户登录后未进入User Dashboard,直接跳转到Admin Dashboard
    • 用户侧边栏所有链接点击后均被重定向回首页
    • 管理员点击侧边栏链接(如「查看所有用户」)同样被重定向至首页
  • 已尝试修改.htaccess规则但无效果,当前.htaccess内容:
<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews -Indexes
    </IfModule>

    RewriteEngine On

    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} (.+)/$
    RewriteRule ^ %1 [L,R=301]

    # Send Requests To Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

排查与修复步骤

1. 确认Hostinger网站根目录配置

Laravel项目必须将public文件夹设为网站根目录,否则会导致路由解析异常:

  • 登录Hostinger面板,进入「网站」→「管理网站」→「设置」→「网站根目录」
  • 选择项目文件夹下的public子文件夹,保存后重启服务器

2. 检查路由分组与中间件校验

路由冲突或中间件缺失是常见原因:

  • 确认用户/管理员路由的前缀、命名、中间件无冲突,示例正确写法:
// web.php 中的用户路由分组
Route::middleware(['auth', 'role:user'])->prefix('user')->name('user.')->group(function () {
    Route::get('/dashboard', [UserDashboardController::class, 'index'])->name('dashboard');
    // 其他用户侧边栏路由
});

// web.php 中的管理员路由分组
Route::middleware(['auth', 'role:admin'])->prefix('admin')->name('admin.')->group(function () {
    Route::get('/dashboard', [AdminDashboardController::class, 'index'])->name('dashboard');
    Route::get('/users', [AdminUserController::class, 'index'])->name('users');
    // 其他管理员侧边栏路由
});
  • 验证role中间件是否正确校验用户角色,确保普通用户无法访问管理员路由,反之亦然

3. 清除Laravel缓存

Hostinger的PHP环境可能缓存路由/配置,导致修改未生效:

  • 登录Hostinger SSH终端,执行以下命令:
php artisan route:clear
php artisan cache:clear
php artisan config:clear

4. 修复登录跳转逻辑

如果普通用户跳管理员面板,大概率是登录成功后的跳转逻辑未判断角色:

  • 修改登录控制器(通常是LoginController)的authenticated方法:
protected function authenticated(Request $request, $user)
{
    // 根据用户角色字段判断跳转目标
    if ($user->role === 'admin') {
        return redirect()->route('admin.dashboard');
    } else {
        return redirect()->route('user.dashboard');
    }
}

5. 服务器环境适配(Nginx场景)

如果Hostinger使用Nginx而非Apache,需要添加Laravel路由规则到Nginx配置:

location / {
    try_files $uri $uri/ /index.php?$query_string;
}

可通过Hostinger面板的「文件管理器」找到Nginx配置文件修改,或联系客服协助配置


内容的提问来源于stack exchange,提问作者Musclehead Developer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 13:53:16