Laravel 9点击确认按钮触发GET请求更新数据库时出现404错误
Laravel 9 点击「Confirm Registration」按钮出现404错误的排查与解决
核心问题:路由参数定义错误
你的404错误最直接的原因是路由参数格式不正确。在web.php的路由定义中,参数前多了一个$符号,导致Laravel无法正确匹配请求路径。
错误路由代码:
Route::get('/registration/confirmation/{$uniquecode}', 'ConfirmRegistration')->name('registration.confirm');
修正后的路由代码:
Route::get('/registration/confirmation/{uniquecode}', 'ConfirmRegistration')->name('registration.confirm');
其他辅助排查点
如果修正路由后仍有问题,可以逐一检查以下内容:
验证生成的URL是否匹配路由规则
在视图中临时打印生成的URL,确认格式是否正确:{{ route('registration.confirm', $view->uniquecode) }}正常情况下应该输出类似
/registration/confirmation/你的uniquecode值的路径,如果格式不符,需要检查$view->uniquecode是否有异常值。检查uniquecode是否包含特殊字符
如果uniquecode包含斜杠(/)等特殊字符,需要修改路由参数的匹配规则,允许匹配任意字符:Route::get('/registration/confirmation/{uniquecode:.+}', 'ConfirmRegistration')->name('registration.confirm');清除路由缓存
运行以下命令清除路由缓存,确保新的路由配置生效:php artisan route:clear验证用户登录状态
控制器中使用了Auth::user()->id,如果用户未登录会抛出异常,但通常这会导致500错误而非404。为了严谨,可以给路由添加登录验证中间件:Route::get('/registration/confirmation/{uniquecode}', 'ConfirmRegistration') ->name('registration.confirm') ->middleware('auth');
内容的提问来源于stack exchange,提问作者Wesley
相关产品推荐
相关产品推荐

