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

aaPanel(Nginx)部署Laravel6仅首页可访问其余链接报404

Laravel 6 Nginx环境下除首页外全路由404修复方案

问题现象

  • 本地环境运行Laravel 6项目一切正常,部署到domainsite.com(CentOS 7 + aaPanel + Nginx + PHP 7.4 + MySQL环境)后仅首页可正常访问,其余所有链接均返回404
  • 已完成的排查操作:
    • 配置了Apache mod_rewrite格式的URL重写规则
    • 已安装fileinfo PHP扩展
    • 已从PHP禁用函数列表移除putenv、symlink函数
    • 以上操作完成后404问题未解决

核心原因

你配置的重写规则是Apache环境专属的.htaccess规则,Nginx不会解析这类规则,路由转发逻辑完全不生效,只有直接访问入口文件的首页能正常打开,其他路径因为没有被转发到index.php,就会直接返回Nginx的404响应。

修复步骤

  1. 修改Nginx站点重写规则
    登录aaPanel面板,找到对应站点的Nginx配置编辑页,在站点对应的server配置块内,添加/替换为Laravel适配的Nginx重写规则:

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

    之前写的Apache格式rewrite规则可以直接删掉,Nginx环境下不会生效。

  2. 校验站点运行目录配置
    aaPanel新建站点默认运行目录是站点根目录,Laravel的前端入口文件在public子目录下,需要把站点运行目录修改为项目根目录/public,如果运行目录配置错误,重写规则也无法正常工作。

  3. 重载Nginx生效配置
    配置保存后,在aaPanel的服务管理界面重载Nginx服务,新配置就会生效,此时访问内页路由应该就能正常加载。

补充排查点

如果完成以上操作后仍有异常,可逐一检查:

  • 项目目录权限:storage、bootstrap/cache两个目录需要给Nginx运行用户分配读写权限,否则会出现框架运行异常
  • 路由缓存:进入项目根目录执行php artisan route:clear清除旧的路由缓存,避免部署时缓存的本地路由和线上路径不匹配
  • 环境变量配置:检查.env文件内的APP_URL是否和实际线上域名一致,不要带多余的子路径后缀

内容的提问来源于stack exchange,提问作者John Arzaga

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 21:57:21