如何在Meteor应用程序上从非www重定向到www

时间:2015-08-10 23:50:19

标签: node.js redirect heroku meteor subdomain

我正在尝试将所有非www流量重定向到我的www域。如果我输入example.com,则会重定向到正确的https://www.example.com。但是,如果我输入http://example.comhttps://example.com,我会获得无限重定向循环。

我已经使用Namecheap设置URL转发,并在Heroku上托管。

目前,我在我的服务器代码中有这个,它正在创建重定向循环(没有它我只是得到一个错误):

WebApp.connectHandlers
    .use(function(req, res, next) {
      var uri = new URI(req.originalUrl);
      if (uri.subdomain() != 'www') {
        uri.normalizeProtocol();
        res.writeHead(301, {
          'Location': 'https://www.example.com' + uri.resource()
        });
        res.end();
      } else {
        next();
      }
    });

我正在使用URI.js来解析网址。关于如何改变这一点的任何想法?

1 个答案:

答案 0 :(得分:1)

我建议在Namecheap中禁用URL转发,并直接在您的应用堆栈中处理。

之后几乎没有选择:

  1. 如果你使用像nginx这样的代理服务它,那么这可能有所帮助:
    How To Redirect www to Non-www with Nginx on CentOS 7

  2. 如果您直接投放,则可能在路由器级别 - Iron Router

       
     Router.route("addWWW", {
          where: "server",
          path: "*",
          action: function() {
            var fullUrl, host;        
            host = this.request.headers.host;
    
            if (host.indexOf("www") !== 0) {
              fullUrl = "http://wwww." + host + this.request.url;
              this.response.writeHead(HTTP_REDIRECT_PERMANENT, {
                Location: fullUrl
              });
              return this.response.end();
            }
          }
        });