Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 在Heroku web应用程序上,如何将用户从.herokuapp.com重定向到自定义域?_Node.js_Http_Heroku - Fatal编程技术网

Node.js 在Heroku web应用程序上,如何将用户从.herokuapp.com重定向到自定义域?

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,则

我使用的是NodeJS,具体来说,我使用的是NodeJS入门教程中的代码。所以我有一个自定义域,但是默认的heroku域也是活动的,我希望自定义域是唯一正在使用的域。希罗库说要这样做

即使您设置了自定义域,应用程序的Heroku域始终保持活动状态。如果您希望用户以独占方式使用自定义域,您的应用程序应发送HTTP status 301 MOVENTERNABLE,以通知web浏览器使用自定义域。主机HTTP请求头字段将显示用户试图访问的域;如果该字段为example.herokuapp.com,则发送重定向

我真的不明白怎么做。我猜我必须更改index.js文件中的某些内容

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说该网站重定向了太多次)。但在我恢复正常后,重定向开始工作。