2017-03-23 2 views
0

J'ai un ensemble de noms de domaine pour lesquels je dois créer des redirections permanentes vers un seul domaine qui est utilisé par une application Node fonctionnant sur un serveur océanique numérique et disons si a 3 routes différentes comme /a, /b, /c et je veux que mes domaines pointent respectivement vers /a, /b, /c.Création de plusieurs redirections permanentes vers une route d'application à nœud unique

De plus, quelles autres informations puis-je fournir pour clarifier ma question?

+0

Utilisez-vous Express? – dan

+0

Oui, j'utilise Express 4 – DeadMan

Répondre

0

Je ne suis pas sûr que ce soit la meilleure solution, mais dans votre Node.js application que vous pourriez faire quelque chose comme:

const express = require('express') 

const app = express() 

app.get('/', function(req, res) { 

    // remove the port number if it's there 
    const host = req.get('host').split(':')[0] 

    if(host === "a.com") { 
     res.redirect('/a') 
    } 
    else if(host === "b.com") { 
     res.redirect('/b') 
    } 
    else if(host === "c.com") { 
     res.redirect('/c') 
    } 
    else { 
     // redirect somewhere else 
    } 
}) 

app.get('/a', function(req, res) { 
    res.send('hello from a') 
}) 

app.get('/b', function(req, res) { 
    res.send('hello from b') 
}) 

app.get('/c', function(req, res) { 
    res.send('hello from c') 
}) 

app.listen(3000, function() { 
    console.log('Listening on 3000') 
}) 

Vous pouvez le tester localement en mettant à jour votre fichier hosts pour pointer un .com, b.com et c.com à 127.0.0.1.

+0

J'ai aussi pensé à une solution similaire, mais j'ai pensé que les redirections sont basées sur des en-têtes de requêtes qui peuvent être modifiés par les utilisateurs/robots. Cela affecterait-il d'une quelconque façon ici? Aussi si disons que j'ai 5 noms de domaine pointant vers la même gouttelette d'océan numérique, comment écrire en express pour que mon application entière serve les requêtes d'un domaine et les autres domaines soient utilisés seulement pour servir des routes spécifiques comme/a ou être sous-domaines comme {abc} .xyz.com – DeadMan

+0

Oui, il serait possible de le tromper en jouant avec les en-têtes. L'autre option consiste à utiliser un proxy inverse comme nginx devant votre application node.js, qui redirige en fonction du domaine, mais j'imagine que nginx utilise les mêmes en-têtes qu'express pour déterminer le domaine. – dan

+0

Pour répondre à votre modification, si vous souhaitez restreindre les domaines à certains utilisateurs, vous devez disposer d'une sécurité appropriée - https://expressjs.com/fr/advanced/best-practice-security.html – dan