部署在Azure Web App的Laravel应用静态资源路由报错求助
解决Laravel部署Azure Web App后静态资源路由错误问题
问题分析
你遇到的No route registered for '/build/assets/app-c50f6abb.js'错误,本质是静态资源请求被Laravel路由系统接管了——Nginx没有直接返回静态文件,而是把请求转发给了Laravel的index.php,导致Laravel找不到对应路由。
排查与解决步骤
1. 确认静态资源是否存在
先检查服务器上的静态文件是否真实存在:
- 登录Azure Web App的SSH终端(或通过Kudu工具控制台),执行命令:
如果看不到对应的JS/CSS文件,说明:ls /home/site/wwwroot/public/build/assets/- 本地未执行前端编译命令(
npm run prod或npm run dev) - 部署时未将编译后的
public/build目录上传至服务器
解决:本地完成编译后重新部署,确保public/build目录被包含在部署包中。
- 本地未执行前端编译命令(
2. 修改Nginx配置优先处理静态资源
如果文件已存在,但Nginx仍把请求转给Laravel,需为静态资源添加单独的Nginx规则:
在你的Nginx配置中,location /块之前添加以下规则:
location ^~ /build/ { try_files $uri =404; }
该规则会让Nginx优先处理/build/开头的请求,直接返回对应文件;若文件不存在则返回404,不会进入Laravel路由逻辑。
3. 确认Laravel资源引用路径正确
确保页面中引用静态资源时使用Laravel的asset()辅助函数,例如:
<script src="{{ asset('build/assets/app-c50f6abb.js') }}"></script>
这会生成基于应用根URL的绝对路径,避免相对路径导致的请求错误。
4. 验证Nginx配置生效
修改配置后,若有权限则重启Nginx;若无权限,可通过Azure Web App的「重启应用」功能触发配置加载,或重新部署应用。
内容的提问来源于stack exchange,提问作者lostForAWHile
相关产品推荐
相关产品推荐

