根本原因是宝塔环境与Laravel运行机制不匹配:一、网站根目录未设为/public;二、伪静态未选Laravel模板;三、PHP缺失必要扩展;四、storage和bootstrap/cache权限未设为www用户且755/644。

宝塔新建站点安装 Laravel 后出现路由异常(如 404、403、空白页、/public 路径必须手动加等),根本原因不是 Laravel 本身出错,而是宝塔环境与 Laravel 的运行机制不匹配。Laravel 依赖严格的入口控制和目录权限结构,而宝塔默认配置常忽略这些细节。
一、public 目录未设为网站根目录
Laravel 所有请求必须经由 public/index.php 入口处理,否则路由无法被识别。宝塔新建站点时,默认将网站根目录指向 Laravel 项目根(含 app/、routes/ 等目录),而非 public 子目录。
- 错误表现:访问域名显示 Laravel 欢迎页但点击 /about 报 404;或直接看到 “Directory listing forbidden”
- 正确操作:在宝塔「网站」→「设置」→「网站目录」中,将「网站根目录」改为 /www/wwwroot/你的站点名/public
- 顺带检查:取消勾选「禁止访问 .htaccess、.user.ini 等敏感文件」——Laravel 需要读取 .htaccess(Apache)或 nginx 重写规则
二、Nginx 伪静态规则未启用或错误
即使根目录设对了,若服务器未把所有请求重写到 index.php,Laravel 的路由系统就收不到非首页的请求。
- 宝塔已内置 Laravel 伪静态模板,但需手动选择:网站设置 → 「伪静态」→ 选择「Laravel 5.6+」
- 切勿使用 ThinkPHP 或 WordPress 规则,它们会干扰 Laravel 的 PATH_INFO 解析
- 如自定义规则,确认包含以下关键段(Nginx):
location / {
try_files $uri $uri/ /index.php?$query_string;
}
三、PHP 版本或扩展缺失
Laravel 9/10 要求 PHP ≥8.0,且必须启用 mbstring、openssl、ctype、json、xml 等扩展。宝塔软件商店安装的 PHP 若未勾选全部必需扩展,会导致路由加载失败或中间件崩溃。
- 检查方式:宝塔 →「软件管理」→ 进入对应 PHP 版本 →「配置文件」→ 查看已启用的扩展;或创建 info.php 输出 phpinfo()
- 常见缺失项:opcache(影响路由缓存)、tokenizer(Laravel 启动必需)、mbstring(中文路由/参数解析依赖)
- 补救:勾选缺失扩展 → 重启 PHP 服务 → 清空 Laravel 缓存:
php artisan optimize:clear
四、storage 和 bootstrap/cache 权限未重置
Laravel 运行时需向 storage/(日志、缓存、session)和 bootstrap/cache/(编译后的路由、配置)写入文件。宝塔默认以 www 用户运行 Nginx/PHP,但上传或解压 Laravel 后,这些目录可能属 root 或其他用户。
- 命令修复(SSH 中执行,替换 your-site-name):
chown -R www:www /www/wwwroot/your-site-name/storagechown -R www:www /www/wwwroot/your-site-name/bootstrap/cache - 同时确保目录权限为 755,文件为 644(宝塔文件管理器可批量设置)
- 权限错误常导致 403 Forbidden 或空白页,且无明确报错



















