cPanel上传Laravel项目至子文件夹后报403错误如何解决?
Laravel cPanel子文件夹部署403错误修复方案
核心原因
你当前的部署方式没有正确指向Laravel的入口目录,Laravel默认的公开访问入口是项目根目录下的public文件夹,直接在项目根目录放置原生Laravel public的.htaccess会因为找不到入口文件触发403权限错误。
修复步骤(二选一即可)
方案1:安全部署(推荐,避免源码泄露)
- 将
public_html/lrvproject下除了public文件夹的所有内容,移动到和public_html同级的目录(比如命名为lrvproject_core,该目录无法被公网直接访问,更安全) - 将
lrvproject/public下的所有文件剪切到public_html/lrvproject目录下 - 打开
public_html/lrvproject/index.php,修改两处路径引用:
// 原代码 require __DIR__.'/../vendor/autoload.php'; $app = require_once __DIR__.'/../bootstrap/app.php'; // 修改为 require __DIR__.'/../../lrvproject_core/vendor/autoload.php'; $app = require_once __DIR__.'/../../lrvproject_core/bootstrap/app.php';
- 给
lrvproject_core/storage和lrvproject_core/bootstrap/cache目录设置755权限。
方案2:保留现有目录结构快速修复
直接替换public_html/lrvproject下的.htaccess内容为以下配置:
<IfModule mod_rewrite.c> <IfModule mod_negotiation.c> Options -MultiViews -Indexes </IfModule> RewriteEngine On RewriteBase /lrvproject/ # 处理授权头 RewriteCond %{HTTP:Authorization} . RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] # 非文件、非目录请求重写到public入口 RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ public/index.php [L] # 移除末尾斜杠 RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} (.+)/$ RewriteRule ^ %1 [L,R=301] </IfModule>
- 保留
lrvproject/public目录下原生的.htaccess文件不要修改 - 给
lrvproject/storage和lrvproject/bootstrap/cache目录设置755权限。
内容的提问来源于stack exchange,提问作者SSarangi
相关产品推荐
相关产品推荐

