【问题标题】:Node.js: 301 redirect non-www without expressNode.js:301 重定向非 www 没有快递
【发布时间】:2013-07-27 13:11:36
【问题描述】:

对于现有项目,我只想做一个简单的更改,将 www.mysite.com 重定向到 mysite.com(因为 cookie 问题,非 www 版本无法访问 www. 上的 cookie)。我不想包含 express。

我该如何做这个简单的改变?

【问题讨论】:

标签: node.js


【解决方案1】:

我想这就是你要找的东西:

var http = require("http");

    http.createServer(function (req, res) {
    res.writeHead(301, {"Location": "http://example.com"});
    res.end();

}).listen(80);

【讨论】:

  • 啊谢谢!我花了很长时间才在普通节点中找到 res.redirect() 的等价物。
【解决方案2】:

更新:这不是问题的合适答案。

你为什么不尝试用这个过滤非 www 请求

app.get ('/*', function (req, res, next){
if (req.headers.host.match(/^www\./))

  {
    res.writeHead (301, {'Location': 'http://example.com'});

    }
else { 

   return next();
    }

} );

您应该只考虑它用于 express,如果您想在 express 之前喜欢重定向,那么您应该在 express 或任何反向代理服务器之前尝试 Nginx,以便在发送到 express 之前可以过滤请求。

【讨论】:

  • 你能解释一下你想在没有 www 请求的情况下处理这些吗?以及为什么不在应用程序之前使用 nginx,或者在传递给 express 之前过滤请求的任何代理服务器
  • 我不使用快递。没关系,我是在客户端上做的。
  • 哦,好吧,那么你在 nodejs 中使用的是什么 appserver ?
  • 是的但是问题已经解决了,不是这个答案通过。我会让你的解决方案
  • @gladoscc 实际上我遇到了和你一样的问题,我通过使用 nginx 作为代理服务器解决了这个问题,并在内部将这两个请求重定向到两个不同的应用服务器。这就是为什么我问你所有的细节,但你解决它的任何方法都很好:)
猜你喜欢
  • 2018-05-01
  • 2014-04-09
  • 1970-01-01
  • 2017-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-19
  • 1970-01-01
相关资源
最近更新 更多