Laravel Jetstream+Livewire部署Namecheap遇静态资源404问题求助
解决方案
1. 修正Vite配置路径
你的静态文件实际存放在public/asset/build目录,但Vite生成的资源URL是/build/assets/...,路径不匹配。修改vite.config.js的base参数:
export default defineConfig({ plugins: [ laravel({ input: ['resources/css/app.css', 'resources/js/app.js'], refresh: true, }), ], base: '/asset/build/', });
2. 确认环境变量配置
在.env文件中设置正确的域名,确保Vite生成的资源URL基于实际域名:
APP_URL=https://yoursite.loc
3. 重新构建静态资源
执行以下命令重新生成带正确路径的静态文件和manifest:
npm run build
4. 恢复@vite指令的正确使用
不要手动替换为资源目录的直接引用,在布局文件中保留原生@vite指令,它会自动读取manifest.json中的正确路径:
@vite(['resources/css/app.css', 'resources/js/app.js'])
5. 检查Web根目录与.htaccess配置
- 确保Namecheap主机的Web根目录指向Laravel项目的
public目录(若主机支持修改);若无法修改,可将public目录内容移至public_html,或在public_html中创建指向项目public/index.php的跳转文件。 - 确保
public(或public_html)下的.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] # Handle Front Controller... RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L] </IfModule>
6. 验证文件权限
确保public/asset/build目录权限为755,目录内的CSS/JS文件权限为644,保证服务器能正常读取这些资源。
内容的提问来源于stack exchange,提问作者Alexandr Bogaciuc
相关产品推荐
相关产品推荐

