Express文件服务无法正确重定向

时间:2018-12-07 00:21:37

标签: node.js

我正在尝试使用nodejs express提供文件,但没有将页面正确重定向到根路径。

我的文件夹结构是这样的: root / pages / index.html

当我访问我的网站时,它会提示我“未找到”错误,直到我手动在其后添加/ pages。

这是我当前的代码:

const express = require('express');
const helmet = require('helmet');
const bodyParser = require('body-parser');
const RateLimit = require('express-rate-limit');
const db = require('knex')(config.database);
const fs = require('fs');
const exphbs = require('express-handlebars');
const edus = express();

fs.existsSync('./pages/custom' ) || fs.mkdirSync('./pages/custom');
fs.existsSync('./' + config.logsFolder) || fs.mkdirSync('./' + config.logsFolder);

edus.use(helmet());
edus.set('trust proxy', 1);

edus.engine('handlebars', exphbs({ defaultLayout: 'main' }));
edus.set('view engine', 'handlebars');
edus.enable('view cache');


edus.use(bodyParser.urlencoded({ extended: true }));
edus.use(bodyParser.json());


edus.use('/', express.static('./public'));
edus.use('/api', api);

for (let page of config.pages) {
    let root = './pages/';
    if (fs.existsSync(`./pages/custom/${page}.html`)) {
        root = './pages/custom/';
    }
    if (page === 'index') {
        edus.get('/', (req, res, next) => res.sendFile(`${page}.html`, { root: root }));
    } else {
        edus.get(`/${page}`, (req, res, next) => res.sendFile(`${page}.html`, { root: root }));
    }
}

edus.use((req, res, next) => res.status(404).sendFile('404.html', { root: './pages/error/' }));
edus.use((req, res, next) => res.status(500).sendFile('500.html', { root: './pages/error/' }));

edus.listen(config.port, () => console.log(`edus started on port ${config.port}`));

我想做的是在/pages/中保存文件,例如/index.html等,以便在直接访问website.com时无需查看{{1} }。

1 个答案:

答案 0 :(得分:0)

  

我的文件夹结构是这样的:root / pages / index.html

但是您现在拥有:edus.use('/', express.static('./public'));应该是: edus.use('/', express.static('./pages'));