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

Javascript 匹配所有具有或不具有.html扩展名的路由,静态资源除外,javascript,node.js,express,routing,Javascript,Node.js,Express,Routing,我正在尝试为每个请求设置一个通用的处理程序,而不是像图像或favicon之类的东西。例如,我希望这个处理程序处理/index,/index.html,/user/123等,但不处理/favicon.ico,/sunflower.png,/images/starfish.png等。 这就是我目前拥有的 app.get('/:name', (req, res) => { res.render(req.params.name) }) 但这当然是匹配的/favicon.ico,以及我不希望它

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

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

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

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

这样,对静态资产的请求就被卸载到代理服务器上,永远不会到达Express。Express最适合异步提供动态内容,不要将其用于提供文件