匹配所有具有或不具有.html扩展名的路由,静态资产除外

时间:2016-06-19 00:35:18

标签: javascript node.js express routing

我试图为每个请求设置一个通用处理程序,这些请求不像图像或图标或类似的东西。例如,我希望此处理程序处理/index/index.html/user/123等,但不是/favicon.ico/sunflower.png/images/starfish.png等。 这是我目前所拥有的

app.get('/:name', (req, res) => {
  res.render(req.params.name)
})

但这当然是匹配/favicon.ico,以及我不希望它匹配的所有其他网址。它也不匹配.html个扩展名。对于这种情况,有没有一个干净的解决方案?

1 个答案:

答案 0 :(得分:0)

生产环境中提供静态资产(如您列出的图像)的最佳解决方案是在Express前面放置一个前置代理(例如:nginx)并相应地进行配置。

这样,对静态资产的请求将被卸载到代理,并且永远不会到达Express。 Express最适合异步提供动态内容,不要用它来提供文件。