Express.js不会在默认请求下重新路由到维护页面

时间:2019-06-17 04:20:32

标签: node.js reactjs express

在网站上工作时,我试图将用户重新路由到维护页面,但是由于某些原因,只有在浏览器中除了基本URL之外,我才进行其他操作。例如:在客户端上,如果我转到http://example.com/,它将加载页面,但是如果我转到http://example.com/somewhere-else,它将正确地重新路由到维护页面。如何侦听和捕获所有HTTP请求(无论路径如何),并正确路由它们? xxx.xxx.xxx.xxx代表我的IP地址。我已经在计算机和手机上测试了此功能,并且已关闭wifi(使用蜂窝网络)。

    const express = require('express');
    const path = require('path');
    const app = express();
    app.use(express.static(path.join(__dirname, 'build')));

    app.get('/ping', function (req, res) {
        return res.send('pong');
    });

    app.get('*', function (req, res) {
        var ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress;
        if (ip.substr(0, 7) == "::ffff:") {
            ip = ip.substr(7)
        }

        if (ip == "xxx.xxx.xxx.xxx") {
            res.sendFile(path.resolve(__dirname, 'build', 'index.html'));
        }
        else {
            res.sendFile(path.resolve(__dirname, 'build', 'construction.html'));
        }
    });

    app.listen(process.env.PORT || 80);

1 个答案:

答案 0 :(得分:0)

请更改以下内容

app.get('*' to app.get('/'

然后,它将所有默认调用重定向到维护页面。