文件,带有相同名称的子目录文件"/>
从Express提供扩展名的静态文件,带有相同名称的子目录文件
这里的目标是使用不带斜杠的URL为我的静态网站(由nuxtjs生成)提供服务。
我想用网址foo.html
投放/foo
为此,我使用带有扩展选项的静态表达>]
。让我们考虑一下这个文件树:app.use(express.static(__dirname + '/public', { extensions: 'html' }))
这很好,除非html文件与文件夹具有相同的名称,否则除外
foo.html bar.html bar/baz.html
[
/foo
将用作foo.html
[/bar/baz
将用作baz.html
但是/bar
将重定向到/bar/
我试图通过这种方式停用重定向选项:
app.use(express.static(__dirname + '/public', { extensions: 'html', redirect: false }))
现在
/bar
不再重定向,但文件bar.html
仍不提供!
Express刚刚移到next()
我能够提供bar.html在其他路由之后添加它:
app.use(function(req, res, next) { var file = __dirname + '/public' + req.path + '.html' fs.exists(file, function(exists) { if (exists) res.sendFile(file) else next() }) })
但是我觉得这不应该是正确的方法,我应该能够为我的所有文件提供静态服务。
这里的目标是为我的静态网站(使用nuxtjs生成)提供带有url的网址,且不加斜杠。我想将foo.html与url / foo一起使用为此,我正在使用带有扩展选项的静态表达...
回答如下:从Express 4.8.0起,您可以使用res.sendFile替代express.static。它使用相同的支持代码,并支持相同的功能,例如HTTP缓存支持,内容类型标头等。
更多推荐
从Express提供扩展名的静态文件,带有相同名称的子目录文件
发布评论