Laravel+Vue应用点击按钮跳转privacy-policy路由出现404问题
404问题排查解决步骤
- 第一步:清除Laravel路由缓存
Laravel会缓存路由配置来提升性能,新增路由后如果没有清除缓存会无法识别。执行命令清除缓存:
php artisan route:clear
再执行命令查看路由列表,确认privacy-policy路由已正确注册:
php artisan route:list
- 第二步:检查web.php路由顺序
如果路由文件中存在/{any}这类通配符路由,必须放在/privacy-policy路由的下方,否则通配符会优先匹配,拦截该路由的请求。 - 第三步:检查控制器命名空间配置
Laravel 8及以上版本默认取消了路由的控制器命名空间前缀,你写的Route::get('/privacy-policy', 'SecurityImplementationController@privacy')写法会找不到控制器。有两种修复方式:- 路由文件顶部引入控制器类,路由写法改成:
use App\Http\Controllers\SecurityImplementationController; Route::get('/privacy-policy', [SecurityImplementationController::class, 'privacy']);- 在
app/Providers/RouteServiceProvider.php中添加$namespace属性,值为App\Http\Controllers,即可兼容旧版本的字符串写法。
- 第四步:检查视图文件是否存在
确认resources/views目录下存在privacy.blade.php文件,注意文件名的大小写,Linux服务器对大小写敏感,拼写错误会导致视图加载失败。 - 第五步:排查Vue路由冲突
如果项目中使用了Vue Router的history模式,且配置了通配符兜底路由,会把/privacy-policy识别为前端路由,不会向后端发起请求。需要在Vue Router配置中排除该路径,或者配置服务端规则,该路径直接走Laravel入口文件。 - 第六步:检查服务端重写规则
确认Nginx/Apache配置支持Laravel伪静态,Nginx配置中需要包含以下规则:
try_files $uri $uri/ /index.php?$query_string;
没有该规则会导致除根路径外的所有路由返回404。
内容的提问来源于stack exchange,提问作者Veenavi Anutthara
相关产品推荐
相关产品推荐

