Laravel项目部署到子目录后出现首页500错误、菜单链接异常问题求助
问题排查与解决步骤
1. 修复index.php路径错误(解决首页500问题)
你当前的index.php路径配置错误,你将public目录的文件移动到了public_html/lrvproject/下,Laravel核心代码(vendor、bootstrap、storage等目录)也存放在该目录下,需要修改三处路径:
// 原错误路径:__DIR__.'/../storage/framework/maintenance.php' if (file_exists(__DIR__.'/storage/framework/maintenance.php')) { require __DIR__.'/storage/framework/maintenance.php'; } // 原错误路径:__DIR__.'/../lrvproject/vendor/autoload.php' require __DIR__.'/vendor/autoload.php'; // 原错误路径:__DIR__.'/../lrvproject/bootstrap/app.php' $app = require_once __DIR__.'/bootstrap/app.php';
路径错误是首页报500的核心原因,修正后即可正常访问首页。
2. 修正.htaccess配置
子目录部署需要指定RewriteBase,在RewriteEngine On下方添加一行配置:
RewriteEngine On # 新增如下行 RewriteBase /lrvproject/
保证重写规则适配子目录路径。
3. 修复server.php路径配置
取消注释正确的引入路径,删除错误的public路径引入即可:
// 注释或删除该行 // require_once __DIR__.'/public/index.php'; // 取消该行注释 require_once __DIR__.'/index.php';
4. 修正应用根路径配置(解决链接缺失子目录问题)
第一步:修改.env配置文件
找到项目根目录下的.env文件,修改APP_URL参数:
APP_URL=https://www.example.com/lrvproject
第二步:强制指定路由根路径
如果修改APP_URL后链接仍未自动拼接子目录,打开app/Providers/AppServiceProvider.php,在boot方法中添加强制根路径配置:
public function boot() { // 新增如下代码 $this->app['url']->forceRootUrl(config('app.url')); // 原有代码保持不变 }
配置完成后清理Laravel缓存:php artisan config:clear
如果无法执行命令,直接删除bootstrap/cache/目录下的所有配置缓存文件即可。
内容的提问来源于stack exchange,提问作者SSarangi
相关产品推荐
相关产品推荐

