0
這個問題很容易解釋。我目前有兩個版本的連接任務,一個使用grunt-contrib-proxy,另一個使用modRewrite。但我需要使用兩者。這樣,如果加載了某些「路由」選擇:['/ login','/ ord']我需要代理請求,但是如果其他任何東西被加載,我需要重定向到/ index.html的。原因是,我使用的是backbone.js,所以localhost:8000/fun應該在主幹中加載有趣的路由。Grunt connect + modRewrite
以下所有連接任務都可以正常工作(單獨使用)。
TL; DR我如何組合這些連接任務:
connect: {
server: {
options: {
port: 9001,
middleware: function(connect, options) {
var middlewares, proxy;
proxy = require('grunt-connect-proxy/lib/utils').proxyRequest;
middlewares = [proxy, connect["static"](options.base), connect.directory(options.base)];
return middlewares;
}
},
proxies: [
{
context: ['/login', '/ord'],
host: '10.10.1.13',
https: false
}
]
}
}
connect: {
server: {
options: {
port: 9001,
open: true,
base: ['./'],
middleware: function(connect, options) {
var middlewares;
middlewares = [];
middlewares.push(modRewrite(['^[^\\.]*$ /index.html [L]']));
options.base.forEach(function(base) {
return middlewares.push(connect["static"](base));
});
return middlewares;
}
}
}
}
在這裏,他們是在咖啡如果你喜歡:
connect:
server:
options:
port: 9001
# keepalive: true
middleware: (connect, options) ->
proxy = require('grunt-connect-proxy/lib/utils').proxyRequest
middlewares = [
proxy
connect.static(options.base)
connect.directory(options.base)
]
middlewares
proxies: [
{
context: ['/login', '/ord']
host: '10.10.1.13'
https: false
}
]
connect:
server:
options:
port: 9001
open: true
base: ['./']
middleware: (connect, options) -> (
middlewares = []
middlewares.push(modRewrite(['^[^\\.]*$ /index.html [L]']))
options.base.forEach((base) ->
middlewares.push(connect.static(base))
)
middlewares
)
感謝bagillion。
這聽起來像你希望代理中間件路由具有優先權。所以只需將它們推入中間件堆棧,然後添加其他。 – bpaul