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

公共托管环境部署Laravel访问报错,.htaccess配置问题如何解决?

问题根因排查&解决方案

你遇到的报错核心是Laravel的入口文件无法找到vendor/autoload.php加载文件,按以下步骤逐一排查解决:

1. 首先修正.htaccess语法错误

你当前的.htaccess存在语法问题,两个RewriteCond规则写在了同一行,Apache无法正常解析,替换为以下内容:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^example.com$ [NC,OR]
RewriteCond %{HTTP_HOST} ^www.example.com$
RewriteCond %{REQUEST_URI} !public/
RewriteRule (.*) /public/$1 [L]

修改后先尝试刷新页面,看是否恢复正常。

2. 确认文件结构&Composer安装路径正确

你提到将Laravel目录下的全部文件放在public_html下,正确的文件结构必须符合以下层级:

public_html/
├── app/
├── bootstrap/
├── vendor/
├── public/
│   ├── index.php
│   └── 其他public目录文件
├── .env
└── 其他Laravel根目录文件
  • 确认public_html/vendor/autoload.php文件真实存在,如果不存在,需要在public_html目录下重新执行composer install,不要在public子目录执行该命令。
  • 确认vendor目录权限为755,目录内文件权限为644,确保web服务器用户有读取权限。

3. 更稳妥的替代部署方案(推荐)

通过.htaccess重定向到public目录的方案容易触发托管商的安全规则,且可能存在路径解析异常,推荐使用以下方案部署,无需修改根目录配置,同时更安全:

  1. 将Laravel根目录下除了public文件夹之外的所有文件,全部放到public_html同级目录(如果托管商不允许访问上级目录,就放到public_html/laravel目录下,后续路径对应调整即可)
  2. 将public文件夹内的所有内容,直接移动到public_html根目录下
  3. 修改public_html/index.php中的两个路径引用:
// 原代码
require __DIR__.'/../vendor/autoload.php';
$app = require_once __DIR__.'/../bootstrap/app.php';

// 如果Laravel核心文件放在上级目录,无需修改上述代码即可生效
// 如果Laravel核心文件放在public_html/laravel目录下,修改为
require __DIR__.'/laravel/vendor/autoload.php';
$app = require_once __DIR__.'/laravel/bootstrap/app.php';
  1. 最后设置storage和bootstrap/cache目录权限为775,确保web服务器有写入权限,避免后续出现缓存、日志写入报错。

4. 额外注意事项

确认你使用的Laravel版本和托管站点的PHP版本兼容:报错信息显示当前PHP版本为7.4,仅支持Laravel 8及更低版本,如果你的Laravel版本≥9,需要升级PHP版本到8.0以上。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 02:06:06