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

Laravel中通过Ajax带参数重定向页面报404错误如何解决

问题原因

404错误的核心原因是当前路由定义仅匹配无参数的/verify路径,没有配置匹配/verify/{token}格式路径的路由规则,访问带token后缀的地址时框架找不到对应路由,直接抛出404响应。
另外你的Ajax跳转用了相对路径,如果当前发起请求的页面不在站点根目录,还会出现路径拼接错误的问题,进一步触发404。

解决步骤
  • 第一步:修改路由定义,增加token参数匹配
    把原来的路由代码替换为带参数的版本,如果需要兼容无参数访问/verify的场景,可以给参数加可选标记:

    // 必选token参数版本,token必须存在才能访问
    Route::view('verify/{token}', 'auth.verify')->name('verify');
    
    // 可选token参数版本,兼容/verify和/verify/xxx两种访问形式
    // Route::view('verify/{token?}', 'auth.verify')->name('verify');
    

    配置后在verify.blade.php中可以通过{{ request()->route('token') }}获取地址栏传递的token值。

  • 第二步:修正Ajax跳转的路径逻辑,避免相对路径错误
    不要硬写相对路径verify/xxx,建议通过路由名生成地址模板,避免部署路径、页面层级变化导致的跳转错误。
    首先在公共模板的script区域提前输出路由模板:

    <script>
        window.VERIFY_URL_TPL = "{{ route('verify', ['token' => '__REPLACE_TOKEN__']) }}";
    </script>
    

    然后修改Ajax的成功回调逻辑:

    $.ajax({
        url: '{{ url('signupUser') }}',
        method: 'post',
        data: formUserSignupData,
        cache: false,
        processData: false,
        contentType: false,
        success: function(response) {
            window.location.href = VERIFY_URL_TPL.replace('__REPLACE_TOKEN__', response.auth_success);
        },
    });
    
  • 第三步:清理路由缓存让新规则生效
    如果你在生产环境开启了路由缓存,修改路由后需要执行命令清除缓存,新的路由规则才会生效:

    php artisan route:clear
    php artisan config:clear
    

    可以执行php artisan route:list查看已注册的路由列表,确认存在verify/{token}对应的GET路由即配置成功。

内容的提问来源于stack exchange,提问作者Mishen Thakshana

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 14:18:22