如何配置express为多个不同的路径提供单个主页?



我是这么想的:

app.use(express.static(path.join(__dirname, 'public')));
app.get('/foo', (req, res) => {
// server the public folder again here
});
app.get('/bar/:id', (req, res) => {
// server the public folder again here
});

我正在尝试部署一个使用路由的react应用程序。问题是,我需要指向所有面向用户的路径(so,/about,/contact等,但不是/assets/images/icon.png)回到主页,因为react应用程序使用react-router,一旦应用程序被构建为生产并作为静态站点,转到mysite.com/about给出404,在构建之前不会有。

所以express.static("./path/to/site")可以是app.use()唯一的参数,或者它可以是第二个参数

对于其他路径,我需要使用app.use()而不是app.get()

所有静态站点默认不处理的路径,我可以这样写:

app.use(express.static(path.join(__dirname, 'public')));
app.use('*', express.static(path.join(__dirname, 'public')));

要像问题中那样更具体,我可以这样写:

app.use(express.static(path.join(__dirname, 'public')));
app.use('/foo', express.static(path.join(__dirname, 'public')));
app.use('/bar/:id', express.static(path.join(__dirname, 'public')));

在这种情况下,没有被静态站点自动处理并且没有在后面列出的路径将导致404。

相关内容

最新更新