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

NodeJS路由本地运行正常 部署到cPanel服务器后无法访问求助

问题原因

你本地访问时路径前缀只有/api,但cPanel部署后你把Node服务映射到了域名的/backend子路径下,所有发往后端的请求都多了一层/backend前缀,而你的Express代码里没有适配这层前缀,无法匹配到对应路由,因此抛出404错误。

解决方案

你可以任选以下一种方案处理:

方案1:修改Express路由前缀(适配性最高)

直接在app.js中给所有路由注册逻辑加上/backend前缀即可,修改后的路由注册代码如下:

// 原有路由注册代码替换为以下内容
app.use("/backend/api/admin",userRouter)
app.use("/backend/api/gstRegistration",gstRegistrationRouter)
app.use("/backend/api/userProfile",userProfileRouter)

如果需要兼顾本地和生产环境,建议把前缀写到环境变量中,避免来回修改代码:

  1. 在.env文件中添加配置:APP_BASE_PATH=/backend(本地环境可以留空)
  2. 路由注册改为动态读取:
const basePath = process.env.APP_BASE_PATH || ''
app.use(`${basePath}/api/admin`,userRouter)
app.use(`${basePath}/api/gstRegistration`,gstRegistrationRouter)
app.use(`${basePath}/api/userProfile`,userProfileRouter)

如果你的静态资源也需要通过带/backend的路径访问,同步修改静态资源路由:

app.use(`${basePath}/images`,express.static('Images'));

方案2:修改cPanel Node应用映射路径

如果你不想修改代码,可以进入cPanel的Node.js应用管理界面,把当前后端应用的映射路径从/backend修改为根路径/。注意这个方案仅适用于该域名只部署这一个Node后端服务的场景,如果域名下还有前端站点不建议使用。

额外注意事项

你当前CORS配置的origin仅允许https://example.com/的请求,如果后续前端部署在其他子域名或者端口,需要同步更新CORS的origin配置,避免跨域报错。

内容的提问来源于stack exchange,提问作者Dixit Rajpurohit

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 00:51:03