仅在请求没有扩展程序的情况下提供静态网页

时间:2017-03-27 12:48:20

标签: node.js express

我有一个名为file.html的HTML文件我希望只有在没有.html扩展名的情况下才能提供该文件。

因此,如果有人请求此网页mydomain.com/file.html,则不应该提供服务。但是,如果有人在没有mydomain.com/file等扩展程序的情况下请求它,则应该提供服务。

我尝试了以下内容:

app.use(express.static(__dirname + '/public', {
    extensions: ['html', 'htm']
}));

上述代码的问题在于,如果请求mydomain.com/file.html

,它也会为网页提供服务

快递中是否有办法允许html网页只在没有扩展名的情况下才会被提供?

1 个答案:

答案 0 :(得分:1)

这是一个小型中间件,用于拒绝以.htm.html结尾的所有路由,并且包含404.请务必在上面的代码中包含此内容以提供静态文件:

function forbidHTMLExtension(req, res, next) {
  let url = req.url;
  if (url.length < 4) return next();
  if (url.slice(-4) === '.htm' || url.slice(-5) === '.html') {
    return res.status(404).send();
  }
  next();
}
app.use(forbidHTMLExtension);