2017-03-23 38 views
0

我有一套域名,我必須創建永久重定向到一個單一的域,正在由一個數字海洋服務器上運行的節點應用程序使用,並且讓我們說是否它有3種不同的路線,例如/a, /b, /c,我希望我的域分別指向/a, /b, /c創建多個永久重定向到單節點應用程序路由

此外,我還可以提供哪些其他信息以使我的問題更清晰。

+0

您使用的是Express嗎? – dan

+0

是的,我正在使用Express 4 – DeadMan

回答

0

我不知道這是否是最好的解決辦法,但在你的Node.js應用程式,你可以這樣做:

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') 
}) 

您可以通過更新您的主機文件測試這一局部,來點.com,b.com和c.com改爲127.0.0.1。

+0

我也想到了一個類似的解決方案,但後來我認爲重定向是基於請求標頭,可以由用戶/機器人更改。這會影響到什麼地方?另外,如果假設我有5個域名指向同一個數字海洋水滴,現在我如何快速寫入,以便我的整個應用程序可以處理來自一個域的請求,而其他域只用於服務特定的路線,如/ a或可能像{abc} .xyz.com – DeadMan

+0

這樣的子域名是的,可以通過混淆標題來欺騙它。另一種選擇是在你的node.js應用前使用一個反向代理,比如nginx,它基於域進行重定向,但我想像nginx使用與express相同的頭來確定域。 – dan

+0

要回答你的修改,如果你想限制某些用戶的域名,那麼你需要適當的安全性 - https://expressjs.com/en/advanced/best-practice-security.html – dan