Laravel 9部署至cPanel出现404错误求助
Laravel 9 部署至 cPanel 404 错误排查方案
1. 核对项目文件结构(核心问题点)
Laravel 正确部署逻辑并非将整个项目放入 public_html,而是:
- 将 Laravel 项目根目录(含
app、vendor、bootstrap等文件夹)放在public_html同级目录(比如 cPanel 主目录下新建laravel-project文件夹存放) - 将 Laravel 项目中
public目录下的所有文件(含index.php、.htaccess)完整复制到public_html目录 - 修改
public_html/index.php中的路径引用,指向外部的项目目录:// 原代码 require __DIR__.'/../vendor/autoload.php'; $app = require_once __DIR__.'/../bootstrap/app.php'; // 修改后(假设外部项目文件夹名为 laravel-project) require __DIR__.'/../laravel-project/vendor/autoload.php'; $app = require_once __DIR__.'/../laravel-project/bootstrap/app.php';
2. 确认 mod_rewrite 模块启用
进入 cPanel 的「Apache Configuration」→「Module Manager」,检查 mod_rewrite 是否处于启用状态,未启用则勾选开启。
3. 调整 .htaccess 规则
替换 public_html/.htaccess 为适配 cPanel 的规则:
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule>
4. 检查目录与文件权限
public_html文件夹权限设置为755- 所有文件(含
index.php)权限设置为644 - 避免因权限不足导致服务器无法读取文件
5. 清除 Laravel 缓存
若有 SSH 权限,进入项目根目录执行:
php artisan config:clear php artisan cache:clear php artisan route:clear php artisan view:clear
若无 SSH 权限,可在 public_html 临时创建 clear-cache.php 文件(执行后删除):
<?php exec('php ../laravel-project/artisan config:clear'); exec('php ../laravel-project/artisan cache:clear'); exec('php ../laravel-project/artisan route:clear'); exec('php ../laravel-project/artisan view:clear'); echo "缓存已清除"; ?>
(注意替换 ../laravel-project 为你的实际项目路径)
内容的提问来源于stack exchange,提问作者Md. Sakibur Rahman
相关产品推荐
相关产品推荐

