我设法使用自定义快速服务器创建子域。这是一个没有资产的空白应用程序,我还没有在带有资产(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