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

Laravel项目删除评论POST请求出现404(Not Found)错误求助

Laravel POST请求404错误排查与解决

问题分析

点击删除评论按钮时出现tp://localhost/delete-comment 404 (Not Found)错误,核心是请求的路由无法被Laravel匹配到,以下是具体排查和解决步骤:

排查步骤与解决方案

1. 确认路由是否正确注册

首先运行Artisan命令查看已注册的路由列表:

php artisan route:list

检查输出中是否存在POST /delete-comment条目,且对应的控制器为App\Http\Controllers\Frontend\CommentController@destroy。

如果路由未出现在列表中,清除路由缓存:

php artisan route:clear

2. 修复前端AJAX的URL问题

错误提示中的URL缺失http前缀,大概率是相对路径拼接问题。不要硬写相对路径,改用Laravel的url()辅助函数生成完整URL:

方案1(Blade模板内直接使用)

修改AJAX的url参数:

$.ajax({
    type:'POST',
    url: "{{ url('delete-comment') }}", // 用Laravel辅助函数生成正确URL
    data: {
        'comment_id': comment_id
    },
    success:function(res){
        if(res.status == 200){
            thisClicked.closest('.comment-container').remove();
            alert(res.message);
        } else {
            alert(res.message);
        }
    },
    error: function(xhr) {
        console.log(xhr.responseText); // 打印错误详情,方便排查
    }
});

注:这段代码必须放在Blade模板文件中,才能让Laravel解析{{ }}语法。

方案2(外部JS文件)

如果JS代码在外部文件中,先在页面的Blade模板里定义全局base URL:

<script>
    const baseUrl = "{{ url('/') }}";
</script>

然后在外部JS中使用:

url: baseUrl + '/delete-comment',

另外,你已经通过$.ajaxSetup全局设置了CSRF Token,所以AJAX的data里可以去掉重复的_token参数。

3. 验证控制器命名空间与路径

确认CommentController的命名空间是App\Http\Controllers\Frontend,与路由中引用的App\Http\Controllers\Frontend\CommentController::class完全匹配,避免因命名空间错误导致控制器无法找到。

4. 清除所有Laravel缓存

运行以下命令清除各类缓存,确保最新配置生效:

php artisan route:clear
php artisan config:clear
php artisan view:clear

5. 检查服务器配置

如果使用Nginx,确保配置文件中已将根目录指向项目的public文件夹,并且包含正确的重写规则:

server {
    listen 80;
    server_name localhost;
    root /path/to/your/project/public;

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

    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php8.2-fpm.sock; // 根据你的PHP版本调整
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

如果是Apache,确保public/.htaccess文件存在且配置正确,Laravel默认的.htaccess已经包含了必要的重写规则。

内容的提问来源于stack exchange,提问作者Abdul Majid

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 11:42:31