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

Laravel10后台路由失效求助:Ubuntu环境下仅前台路由可用

解决Laravel后台路由Apache 404问题的排查方案

1. 排查路由定义冲突

检查routes/web.php中的路由顺序与语法,确保后台/dashboard路由没有被前台路由拦截。如果前台使用了通配符路由(如Route::get('/{any}', ...)),需将具体的/dashboard路由放在通配符路由之前:

// 先定义具体路由
Route::get('/dashboard', function () {
    return view('dashboard');
})->name('dashboard');

// 再定义通配符路由(如果有)
Route::get('/{any}', function ($any) {
    return view('frontend');
})->where('any', '.*');

2. 启用Apache Rewrite模块

Ubuntu下执行命令开启rewrite模块并重启Apache:

sudo a2enmod rewrite
sudo systemctl restart apache2

Laravel的路由依赖rewrite规则实现URL重写,未启用该模块会导致非根路径路由返回404。

3. 配置Apache站点的AllowOverride

编辑Apache站点配置文件(通常位于/etc/apache2/sites-available/000-default.conf或自定义站点文件),确保Laravel项目public目录的AllowOverride设置为All:

<Directory /var/www/html/laravel10/public>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Require all granted
</Directory>

修改后重启Apache:

sudo systemctl restart apache2

该设置允许Apache读取public/.htaccess中的rewrite规则,否则自定义路由会被Apache直接拦截。

4. 清除Laravel路由缓存

执行命令清除路由与配置缓存,确保新添加的路由生效:

php artisan route:clear
php artisan config:clear

开发环境下建议避免使用route:cache命令,防止修改路由后需手动清除缓存。

5. 再次确认目录权限

确保Apache运行用户(www-data)拥有public目录的读写执行权限:

sudo chown -R www-data:www-data /var/www/html/laravel10/public
sudo chmod -R 755 /var/www/html/laravel10/public

内容的提问来源于stack exchange,提问作者James Martin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 02:46:20