在共享主机部署Laravel 11应用后JS与CSS无法加载问题求助
Laravel 11部署cPanel后JS/CSS加载失败的解决步骤
重新生成配置与缓存
登录cPanel终端或通过SSH连接服务器,进入项目根目录执行以下命令:php artisan config:cache php artisan route:cache php artisan cache:clear php artisan view:clear生产环境下缓存配置和路由,能确保应用读取最新的
APP_ENV和APP_URL设置。编译前端资源(Vite)
Laravel 11默认用Vite管理前端资源,需确保生产资源已正确编译:- 本地环境执行:
编译完成后,将项目根目录下的npm install npm run buildpublic/build文件夹完整上传至服务器的public目录。 - 若服务器支持Node.js,也可直接在cPanel终端进入项目根目录,执行上述命令完成编译。
- 本地环境执行:
检查资源引入方式
确保Blade模板中使用官方@vite指令引入资源,禁止硬编码路径:@vite(['resources/css/app.css', 'resources/js/app.js'])Vite编译后的资源文件名带哈希值,硬编码路径会导致无法匹配正确文件。
修正文件权限
通过cPanel文件管理器,设置public目录及其子目录权限为755,文件权限为644,确保服务器能正常读取静态资源。检查.htaccess配置
- 确认
public目录下的.htaccess包含Laravel默认重写规则(无则新建):<IfModule mod_rewrite.c> <IfModule mod_negotiation.c> Options -MultiViews -Indexes </IfModule> RewriteEngine On # 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] # Send Requests To Front Controller... RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L] </IfModule> - 若项目部署在cPanel主目录而非
public子目录,需在主目录的.htaccess添加规则,将请求指向public:RewriteEngine On RewriteRule ^(.*)$ public/$1 [L]
- 确认
验证Vite配置
检查项目根目录的vite.config.js,确保base配置正确(根域名部署时设为'/'即可):import { defineConfig } from 'vite'; import laravel from 'laravel-vite-plugin'; export default defineConfig({ plugins: [ laravel({ input: ['resources/css/app.css', 'resources/js/app.js'], refresh: true, }), ], base: '/', });
内容的提问来源于stack exchange,提问作者Farshid
相关产品推荐
相关产品推荐

