我设法使用自定义快速服务器创建子域。这是一个没有资产的空白应用程序,我还没有在带有资产(CSS、图像等)的真实应用程序上尝试过
我有以下页面文件夹结构:
pages/
├── admin/
│   ├── index.js
│   └── sample-page.js
└── member/
    ├── index.js
    └── accounts/
        └── dashboard.js
当您使用next dev默认值时。这将产生以下路线:
但是使用自定义server.js文件并使用node server.js它运行我们的开发服务器将产生以下路由:
我们server.js文件的内容:
const express = require('express')
const next = require('next')
const vhost = require('vhost')
const port = process.env.PORT || 3000
const dev = process.env.NODE_ENV !== 'production'
const app = next({ dev })
const handle = app.getRequestHandler()
app.prepare().then(() => {
  const mainServer = express()
  const adminServer = express()
  const memberServer = express()
  adminServer.get('/', (req, res) => {
    return app.render(req, res, '/admin', req.query)
  })
  adminServer.get('/*', (req, res) => {
    return app.render(req, res, `/admin${req.path}`, req.query)
  })
  adminServer.all('*', (req, res) => {
    return handle(req, res)
  })
  memberServer.get('/', (req, res) => {
    return app.render(req, res, '/member', req.query)
  })
  memberServer.get('/*', (req, res) => {
    return app.render(req, res, `/member${req.path}`, req.query)
  })
  memberServer.all('*', (req, res) => {
    return handle(req, res)
  })
  mainServer.use(vhost('admin.lvh.me', adminServer))
  mainServer.use(vhost('lvh.me', memberServer))
  mainServer.use(vhost('www.lvh.me', memberServer))
  mainServer.listen(port, (err) => {
    if (err) throw err
    console.log(`> Ready on http://lvh.me:${port}`)
  })
})
请参阅 repo 以查看此操作。
回购:https : //github.com/dcangulo/nextjs-subdomain-example