我想使用express静态服务器配置来实现静态服务器:
app.configure(function() {
app.use(express.static(__dirname + '/public'));
});
但我想将网址http://myhost/url1
映射到目录C:\dirA\dirB
,将http://myhost/url2
映射到目录C:\dirC
如何使用express.static实现?
答案 0 :(得分:8)
这应该适合你:
var serveStatic = require( "serve-static" );
app.use('/url1', serveStatic('c:\\dirA\\dirB'));
app.use('/url2', serveStatic('C:\\dirC'));
查看app.use()的文档。
答案 1 :(得分:7)
根据您计划以这种方式映射的目录数量,您可以简单地为public
文件夹中的这些目录创建符号链接。
在Windows中:
mklink /D c:\dirA\dirB public\url1
在Linux或OSX中:
ln -s /dirA/dirB public/url1
然后你的静态资产服务器应该透明地从这些目录中提供服务(我从未在Windows上测试,但我不明白为什么它不起作用)。
或者,如果您想要包含某种动态路由,您可以编写自己的中间件来替换实际上express.static
的{{1}}。看一下static.js中的connect source,看看它是如何实现的,编写自己的变体应该相当简单。