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

Express首页路由未被捕获,仅非首页路由可触发HTTPS跳转如何解决?

Express首页路由无法触发HTTPS跳转问题解决方案

根因说明

Express 中间件的执行优先级完全按照注册顺序决定,先注册的中间件会优先处理请求。
问题代码中将express.static静态资源中间件注册在了HTTPS跳转中间件之前:

  • 访问首页/时,express.static会默认匹配静态目录下的index.html文件,直接返回响应结束请求,不会进入后续的HTTPS跳转逻辑,因此首页无跳转响应。
  • 访问其他无对应静态文件的路由时,express.static不会终止请求,才会传递到后续的跳转中间件执行,因此这部分路由跳转正常。

修复方案

调整中间件注册顺序,将HTTPS跳转中间件放在所有业务中间件的最前方,保证所有请求都会先完成HTTP/HTTPS校验,再执行后续逻辑。
正确的代码顺序如下:

// 最先注册跳转校验中间件
app.use((req, res, next) => {
    req.secure ? next() : res.redirect('https://' + req.headers.host + req.url)
})

// 再注册静态资源中间件
app.use(express.static(path.join(__dirname, './website/build'), { dotfiles: 'allow' }));

// 最后注册兜底路由
app.use((req, res) => {
    res.sendFile(path.join(__dirname, './website/build/index.html'));
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 00:48:04