使用正则表达式为多个路径提供静态文件

时间:2016-04-17 16:45:41

标签: node.js express

我的应用中有不同的路径,如:

  • /a
  • /a/:b
  • /a/:/b/:c/:d

对于像/a这样的路径,我使用:

app.use(express.static(path.join(__dirname, 'public')));

对于像/a/:b这样的路径,我会添加另一个像这样的路径:

app.use('/a', express.static(path.join(__dirname, 'public')));

不是为每个路径添加express.static,而是使用正则表达式使用单行代码实现此目的。 类似的东西:

app.use(/\/[a-z]*/, express.static(path.join(__dirname, 'public')));
// BTW, this doesn't work

为多个路径提供静态文件的好习惯是什么?谢谢。

2 个答案:

答案 0 :(得分:0)

您可以重定向以添加尾部斜杠:

app.all(/\/[a-z]*/, function(req, res) { 
    res.redirect('/static/'); 
});
app.use('/static/', express.static( __dirname + '/public' ));

答案 1 :(得分:0)

我通过将所有静态链接添加为预斜线来解决这个问题 例如:

<link href='/lib/csss/bstrap.min.js' />

而不是

<link href='lib/csss/bstrap.min.js' />

NodeJS+Express: serving static files for diffrerent URLs