Laravel 8 登录后dashboard页vendor/livewire/livewire.js 404错误如何解决
问题根源
你的问题核心是站点Web服务器的文档根目录配置不符合Laravel的标准部署要求,同时.htaccess存放位置错误,导致静态资源路径解析异常:Livewire默认生成的资源地址不带public前缀,请求会指向项目根目录的vendor文件夹,但实际前端静态资源仅存在于public/vendor目录下。
排查步骤
- 确认Apache虚拟主机的
DocumentRoot配置:检查是否指向了Laravel项目的根目录,而非标准要求的public子目录 - 验证Livewire配置:查看
config/livewire.php中的asset_url参数是否为默认空值,空值状态下会自动根据站点根路径生成资源地址 - 确认文件结构:检查项目根目录的
vendor文件夹下是否不存在livewire/livewire.js文件,该静态资源仅会出现在public/vendor目录下
解决方案
方案1:标准部署修正(推荐,无安全风险)
Laravel官方要求Web服务器的文档根目录必须指向public目录,既可解决资源路径问题,也能避免根目录下.env等敏感文件被公开访问:
- 修改Apache虚拟主机配置,将
DocumentRoot从/你的项目路径修改为/你的项目路径/public - 把当前存放在项目根目录的
.htaccess文件移动到public目录下 - 重启Apache服务,无需修改其他配置即可恢复正常
方案2:不可修改站点根目录时的临时方案
如果受虚拟主机权限限制无法调整DocumentRoot,可通过以下方法临时修复:
- 替换项目根目录的
.htaccess内容,新增静态资源转发规则:
RewriteEngine On # 新增静态资源转发规则 RewriteRule ^(vendor|js|css|images|assets)(.*)$ public/$1$2 [L] # 原有规则保持不变 # Handle Authorization Header RewriteCond %{HTTP:Authorization} . RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] # Redirect Trailing Slashes If Not A Folder... RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} (.+)/$ RewriteRule ^ %1 [L,R=301] # Handle Front Controller... RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L]
- 修改
config/livewire.php配置,指定资源前缀:
'asset_url' => '/public',
- 执行
php artisan config:cache清除配置缓存后即可生效
注意:方案2存在安全风险,项目根目录的敏感文件可能被直接访问,仅作为临时应急方案使用。
内容的提问来源于stack exchange,提问作者Adhi Kristianto
相关产品推荐
相关产品推荐

