В веб-приложениях Heroku, как перенаправить пользователей с .herokuapp.com на личный домен? - PullRequest
1 голос
/ 20 июня 2020

Я использую NodeJS, в частности, я использую учебный код из node-js -getting-started. Итак, у меня есть собственный домен, но также активен домен heroku по умолчанию, и я хотел бы, чтобы пользовательский домен был единственным используемым. Heroku сказал сделать это.

Домен Heroku вашего приложения всегда остается активным, даже если вы настроили собственный домен. Если вы хотите, чтобы пользователи использовали только персональный домен, ваше приложение должно отправлять HTTP-статус 301 Moved Permanently, чтобы указать веб-браузерам использовать персональный домен. Поле заголовка 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 }`))

1 Ответ

0 голосов
/ 20 июня 2020

Если это маршрут «/» или любой другой маршрут, вы должны перенаправить его в свой домен с кодом 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();
  }
}); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...