首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Grunt连接+ modRewrite

Grunt连接+ modRewrite
EN

Stack Overflow用户
提问于 2014-01-22 00:24:17
回答 1查看 2.2K关注 0票数 0

这个问题很容易解释。我目前有两个版本的connect任务,一个与grunt-cont肋骨代理一起工作,另一个与modRewrite一起工作。但我需要两者兼用。

这样,如果加载了某些“路由”选项:'/login‘、'/ord’,我需要代理请求,但是如果加载了任何其他选项,则需要重定向到/index.html。原因是我使用的是backbone.js,所以localhost:8000/fun应该在主干中加载乐趣路由。

下面的所有连接任务都很完美(自行完成)。

TL;DR如何组合这些连接任务:

代码语言:javascript
复制
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;
      }
    }
  }
}

如果你喜欢的话,它们就在咖啡里:

代码语言:javascript
复制
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
      )

谢谢百吉饼。

EN

回答 1

Stack Overflow用户

发布于 2014-01-22 21:40:48

这篇文章有助于解决我的问题。

咖啡溶液:

代码语言:javascript
复制
connect:
  server:
    options:
      port: 9001
      base: './'
      # keepalive: true
      uselessMiddleware: (req, res, next) ->
        next()
      middleware: (connect, options) ->
        # same as in grunt-contrib-connect

        directory = options.directory || options.base[options.base.length - 1]
        if (!Array.isArray(options.base))
          options.base = [options.base]

        # custom middleware
        proxy = require('grunt-connect-proxy/lib/utils').proxyRequest
        middlewares = [
          # proxy
          proxy
          connect.static(options.base[0])
          connect.directory(options.base[0])
          # mod rewrite
          modRewrite(['^[^\\.]*$ /index.html [L]'])
          connect.static(options.base[0])
        ]

        # same as in grunt-contrib-connect
        options.base.forEach( (base) ->
          middlewares.push(connect.static(base))
        )
        middlewares.push(connect.directory(directory))
        middlewares

    proxies: [
      {
        context: ['/login', '/UserData', '/logout']
        host: '10.10.1.13'
        https: false
      }
    ]
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21271868

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档