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

Laravel 8部署生产服务器后样式JS等静态资源加载失败如何解决

问题原因

你当前将项目根目录作为Web服务文档根的部署方式下,Laravel自带的CSS、JS、图片等静态资源实际存放于public子目录,现有.htaccess规则未配置静态资源路径映射,请求静态资源时会直接在根目录查找文件,或被统一转发到入口文件,导致资源加载失败。

修复方案

直接替换根目录下的.htaccess文件内容为以下配置:

Options -MultiViews -Indexes

RewriteEngine On

# 处理Authorization请求头
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

# 静态资源路径重写:根目录不存在对应资源时,自动映射到public目录查找
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !^/public/
RewriteRule ^(.*)$ /public/$1 [L]

# 非目录路径自动去除末尾斜杠
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]

# 其余业务请求统一转发到前端入口
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
注意事项
  • 配置更新后请清除浏览器缓存再测试,避免旧的301重定向缓存导致规则不生效。
  • 该方案仅适用于无法修改Web服务文档根目录的场景,生产环境优先推荐将Web服务的文档根直接指向项目的public目录,避免项目敏感文件(如.env)暴露在公网可访问路径下,同时减少重写规则带来的额外性能开销。
  • 如果项目中使用asset()、mix()等助手函数生成的资源路径仍异常,可以在项目根目录的.env文件中添加配置ASSET_URL=/public,即可生成正确的资源访问路径。

内容的提问来源于stack exchange,提问作者Piotr Popławski

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 00:57:31