我正在尝试将所有非www流量重定向到我的www域。如果我输入example.com
,则会重定向到正确的https://www.example.com。但是,如果我输入http://example.com或https://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来解析网址。关于如何改变这一点的任何想法?
答案 0 :(得分:1)
我建议在Namecheap中禁用URL转发,并直接在您的应用堆栈中处理。
之后几乎没有选择:
如果你使用像nginx这样的代理服务它,那么这可能有所帮助:
How To Redirect www to Non-www with Nginx on CentOS 7
如果您直接投放,则可能在路由器级别 - 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();
}
}
});