表示子域路由问题

时间:2018-09-30 18:00:34

标签: node.js express subdomain

我正在为我的网站使用npm i -D @types/cheerio 模块,但是当我使用此代码时:

express-subdomain

我得到以下结果:

  • const express = require('express') const subdomain = require('express-subdomain') const app = express() const apiRouter = express.Router() apiRouter.get('/', (req, res) => { res.send("Welcome to the API!") }) app.use(subdomain('api', apiRouter)) app.get('/', (req, res) => { res.send("Main domain - Homepage") }) app.get('/about', (req, res) => { res.send("Main domain - About") }) ->按预期显示主索引页面
  • website.com->按预期显示“关于”页面
  • website.com/about->按预期显示API子域的索引页
  • api.website.com->显示主域api.website.com/about的“关于”页面! <---不好

因此,主域的路由也将应用于子域。 我已经通过Google搜索,但没有找到:(

对于解决此问题的任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:2)

对于每个子域,您需要分别处理404错误:

const express = require('express')
const subdomain = require('express-subdomain')
const app = express()
const apiRouter = express.Router()

apiRouter.get('/', (req, res) => {
  res.send("Welcome to the API!")
})

apiRouter.use((req, res, next) => {
  res.status(404)
  next(new Error('Not found'))
})

app.use(subdomain('api', apiRouter))

app.get('/', (req, res) => {
  res.send("Main domain - Homepage")
})

app.get('/about', (req, res) => {
  res.send("Main domain - About")
})