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

Laravel API路由404 NotFound问题排查与修复求助

Laravel API在Cpanel部署后404问题解决指南

一、正确的请求URL

根据你的配置,正确请求URL应为:
https://你的域名/api/v1/user-login
(无需添加index.php,Laravel重写规则会自动处理入口文件)

二、剩余排查点

  • 检查Cpanel的Mod Rewrite模块是否开启:通常在「Apache配置」或「优化网站」选项中开启,未开启的话.htaccess规则完全无效。
  • 确认.env文件的APP_URL配置:确保APP_URL设置为你的域名(如APP_URL=https://你的域名),错误配置会导致路由解析异常。
  • 验证服务器PHP版本:Laravel 5.5.50要求PHP≥7.0,低于该版本会引发隐性路由错误。
  • 检查文件权限:确保storage和bootstrap/cache目录有写入权限(一般设为755或775,根据服务器用户组调整),权限不足会导致路由缓存无法生成或读取。
  • 核对Cpanel的域名根目录配置:如果用子域名,确认子域名根目录指向public_html而非其他文件夹。
  • 查看Apache错误日志:Cpanel的「错误日志」会记录404触发的具体原因,比如重写规则执行失败、文件路径错误等,是定位问题的关键。

三、修复步骤

  1. 修正Laravel部署目录(核心操作)
    Laravel正确部署方式是将public目录内容放到public_html,而非整个项目直接丢入。当前把全量项目(app、routes等)放public_html会导致入口文件路径错误,重写规则无法正确指向index.php:

    • 将public_html内所有文件(除public目录)移到服务器上级目录(如/home/你的用户名/laravel-api)。
    • 将laravel-api/public内所有文件移到public_html目录。
    • 修改public_html/index.php的路径配置:
      // 原代码
      require __DIR__.'/../bootstrap/autoload.php';
      $app = require_once __DIR__.'/../bootstrap/app.php';
      // 修改后
      require __DIR__.'/../laravel-api/bootstrap/autoload.php';
      $app = require_once __DIR__.'/../laravel-api/bootstrap/app.php';
      
  2. 重新配置.htaccess
    确保public_html/.htaccess使用Laravel默认重写规则:

    <IfModule mod_rewrite.c>
        <IfModule mod_negotiation.c>
            Options -MultiViews -Indexes
        </IfModule>
    
        RewriteEngine On
    
        # Handle Authorization Header
        RewriteCond %{HTTP:Authorization} .
        RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
    
        # Redirect Trailing Slashes If Not A Folder...
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteCond %{REQUEST_URI} (.+)/$
        RewriteRule ^ %1 [L,R=301]
    
        # Send Requests To Front Controller...
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule ^ index.php [L]
    </IfModule>
    
  3. 重新生成路由缓存
    进入Laravel项目根目录(/home/你的用户名/laravel-api)执行:

    php artisan route:clear
    php artisan route:cache
    
  4. 设置正确文件权限
    给Laravel根目录的storage和bootstrap/cache配置权限:

    chmod -R 755 storage bootstrap/cache
    chown -R 你的用户名:apache storage bootstrap/cache # 根据服务器用户组调整,部分服务器为nobody
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 05:10:23