laravel在宝塔中首页正常但链接404,因nginx未配置try_files重写规则;需将location块中try_files改为$uri $uri/ /index.php?$query_string,并设运行目录为/public、正确配置app_url/asset_url、确保storage与bootstrap/cache可写且php错误显示开启。

为什么 Laravel 项目在宝塔里打开首页正常,但点链接就 404
因为宝塔默认的 Nginx 配置没启用 try_files 重写规则,Laravel 的路由全靠它把请求兜底给 index.php 处理。不配这个,Nginx 找不到对应物理文件就直接返回 404。
实操建议:
PHP中文网提供Laravel 13.2.0版本下载,Laravel框架 是基于 PHP 8.3+ 的高性能框架,官方推荐通过 Composer 安装。它内置 AI SDK、JSON:API Resources 及原生向量搜索,支持属性驱动开发与队列路由,大幅提升开发效率。相比旧版,13.2.0 优化了缓存 TTL 管理与实时通信,无需 Redis 即可横向扩展。作为现代 Web 开发首选,它兼顾安全与极速体验,助您快速构建企业级应用。
- 进宝塔 → 网站 → 找到你的站点 → “设置” → “配置文件”
- 找到
location / { ... }这一段,把里面的try_files $uri $uri/ =404;替换成:try_files $uri $uri/ /index.php?$query_string;
- 别漏掉
$query_string—— 没它,GET 参数(比如?page=2)会丢失 - 改完点“保存”,再点“重载配置”,别只点保存就以为生效了
Laravel 的 public 目录必须设为网站根目录
宝塔建站时如果选了项目根目录(比如 /www/wwwroot/myapp),但没手动切到 public 子目录,就会导致 index.php 不在 Web 可访问路径下,所有请求都过不了入口。
实操建议:
- 进宝塔 → 网站 → 站点设置 → “网站目录” → 把“运行目录”改成
/public - 不要手动把整个 Laravel 项目拖进
public里,那是反着来的 - 确认后访问
http://你的域名,看是否能加载出 Laravel 默认欢迎页;如果报错Class 'Illuminate\Foundation\Application' not found,说明vendor/autoload.php没加载上,大概率是index.php路径错了或 Composer 没装好
APP_URL 和 ASSET_URL 在部署后必须显式配置
本地开发时 Laravel 可能靠自动探测生成 URL,但宝塔环境下常因反向代理、HTTPS、子目录等导致 url() 或 asset() 生成错误链接,比如跳 http、漏域名、拼出 /public/css/app.css 这种非法路径。
实操建议:
- 编辑
.env文件,确保这两项明确写死:APP_URL=https://yourdomain.com<br>ASSET_URL=https://yourdomain.com
- 如果用了 CDN 或对象存储,
ASSET_URL可单独设成https://cdn.example.com - 改完执行
php artisan config:clear(在项目根目录下运行),否则缓存会掩盖改动 - 注意:宝塔终端里执行命令前,先
cd /www/wwwroot/your-site,别在网站根目录外乱跑
部署后页面空白或报 500 Internal Server Error 怎么快速定位
不是代码写错了,大概率是权限、扩展或日志不可写。Laravel 出错不打屏,全靠日志和 PHP 错误开关。
实操建议:
- 先看宝塔面板里的“错误日志”,路径通常是
/www/wwwlogs/yourdomain.error.log,里面常有真实 PHP 报错 - 检查
storage和bootstrap/cache是否可写:ls -l storage/,确认 www 用户有读写权限(宝塔默认用www用户跑 PHP) - 临时开启 PHP 错误显示:在宝塔 → 网站 → 设置 → “PHP 版本” → “设置” → 把
display_errors改成On,再刷新页面看报错 - 常见坑:
php-fpm进程用户和宝塔设置的网站运行用户不一致,导致chmod -R 755 storage也白搭——得用chown -R www:www storage










