Node.js 在Heroku web应用程序上,如何将用户从.herokuapp.com重定向到自定义域?
我使用的是NodeJS,具体来说,我使用的是NodeJS入门教程中的代码。所以我有一个自定义域,但是默认的heroku域也是活动的,我希望自定义域是唯一正在使用的域。希罗库说要这样做 即使您设置了自定义域,应用程序的Heroku域始终保持活动状态。如果您希望用户以独占方式使用自定义域,您的应用程序应发送HTTP status 301 MOVENTERNABLE,以通知web浏览器使用自定义域。主机HTTP请求头字段将显示用户试图访问的域;如果该字段为example.herokuapp.com,则发送重定向 我真的不明白怎么做。我猜我必须更改index.js文件中的某些内容Node.js 在Heroku web应用程序上,如何将用户从.herokuapp.com重定向到自定义域?,node.js,http,heroku,Node.js,Http,Heroku,我使用的是NodeJS,具体来说,我使用的是NodeJS入门教程中的代码。所以我有一个自定义域,但是默认的heroku域也是活动的,我希望自定义域是唯一正在使用的域。希罗库说要这样做 即使您设置了自定义域,应用程序的Heroku域始终保持活动状态。如果您希望用户以独占方式使用自定义域,您的应用程序应发送HTTP status 301 MOVENTERNABLE,以通知web浏览器使用自定义域。主机HTTP请求头字段将显示用户试图访问的域;如果该字段为example.herokuapp.com,则
const express = require('express')
const path = require('path')
const PORT = process.env.PORT || 5000
express()
.use(express.static(path.join(__dirname, 'public')))
.set('views', path.join(__dirname, 'views'))
.set('view engine', 'ejs')
.get('/', (req, res) => res.render('pages/index'))
.listen(PORT, () => console.log(`Listening on ${ PORT }`))
如果路由是“/”或实际上是任何路由,您应该将其重定向到您的域,代码为301
试试这样的
var express = require('express')
var app = express()
self.app.all(/.*/, function(req, res, next) {
var host = req.header("host");
if (host.match(/^herokuapp\..*/i)) {
res.redirect(301, "http://www." + host + req.url);
} else {
next();
}
});
如果路由是“/”或实际上是任何路由,您应该将其重定向到您的域,代码为301
试试这样的
var express = require('express')
var app = express()
self.app.all(/.*/, function(req, res, next) {
var host = req.header("host");
if (host.match(/^herokuapp\..*/i)) {
res.redirect(301, "http://www." + host + req.url);
} else {
next();
}
});
它实际上开始工作了,我没有更改文件。这可能与我在域名注册器中使用的重定向URL有关。无论如何谢谢你!所以现在如果用户进入domain.herokuapp.com,他/她是否会被重定向到domain.com?是的。我想我会在另一个网络应用程序上测试它,并确认是什么让它开始工作的。所以我不确定它为什么会工作。我使用了重定向301功能,但它不起作用(chrome说该网站重定向了太多次)。但在我恢复正常后,重定向开始工作。它实际上开始工作,我没有更改文件。这可能与我在域名注册器中使用的重定向URL有关。无论如何谢谢你!所以现在如果用户进入domain.herokuapp.com,他/她是否会被重定向到domain.com?是的。我想我会在另一个网络应用程序上测试它,并确认是什么让它开始工作的。所以我不确定它为什么会工作。我使用了重定向301功能,但它不起作用(chrome说该网站重定向了太多次)。但在我恢复正常后,重定向开始工作。