如何使用Express将无扩展名文件作为text / html提供?

时间:2018-03-14 14:52:53

标签: azure express nginx azure-web-sites

我正在使用Express来使用Nginx来提供静态网站。许多文件没有扩展名,内容是HTML。提供服务时,MIME类型为application / octet-stream。如何以text / html的形式提供任何无扩展名文件?

编辑:我在Linux上的Azure应用服务中执行此操作,因此我无法完全控制服务器。我不能只创建/etc/nginx/mime.types文件,并期望它由于托管Web服务的性质而起作用。但是,我确实创建了该文件,看它是否在短期内解决了我的问题,但事实并非如此。我创建了/etc/nginx/mime.types并添加了内容...

server {
   default_type text/html;
}

然后我重新启动了服务器,但我仍然得到application/octet-stream

我希望在Express中有办法做到这一点。这是我用来为静态网站服务的节点代码......

var express = require('express');
express()
    .use(express.static(__dirname))
    .listen(process.env.PORT || 3000);

我尝试在express.static.mime.define({'text/html': ['']});行之后添加var express...,但这没有帮助。

1 个答案:

答案 0 :(得分:0)

终于搞清楚了!

var express = require('express');
var path = require('path')

express()
  .use(express.static(__dirname, {
    setHeaders: (res, requestPath) => {
      let noExtension = !Boolean(path.extname(requestPath));
      if(noExtension) res.setHeader('Content-Type', 'text/html');
    }
  }))

  .listen(process.env.PORT || 3000);