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触发的具体原因,比如重写规则执行失败、文件路径错误等,是定位问题的关键。
三、修复步骤
修正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';
- 将
重新配置
.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>重新生成路由缓存
进入Laravel项目根目录(/home/你的用户名/laravel-api)执行:php artisan route:clear php artisan route:cache设置正确文件权限
给Laravel根目录的storage和bootstrap/cache配置权限:chmod -R 755 storage bootstrap/cache chown -R 你的用户名:apache storage bootstrap/cache # 根据服务器用户组调整,部分服务器为nobody
内容的提问来源于stack exchange,提问作者FetFrumos
相关产品推荐
相关产品推荐

