路由整个文件夹及其内容

时间:2016-11-06 08:28:17

标签: javascript node.js express web routing

我想通过将用户重定向回索引来保护文件夹及其内容。

我试过这个,但它只是部分有效。

var express = require('express');
var path = require('path');
var http = require('http');
var app = express();


app.set('port', 8080);
app.set('view engine', 'ejs');
app.use(express.static(path.join(__dirname, 'views')));

app.get('/', function(req, res) {
   res.render('index.ejs'); 
});

app.get('/protected/*', function(req, res, next) {
    res.redirect('/');
    next(); 
});

//activating server
http.createServer(app).listen(app.get('port'), function(){
  console.log('Express server listening on port ' + app.get('port'));
});

此路由,例如“localhost:8080 / protected”和“localhost:8080 / protected / asdf”,但不是“localhost:8080 / protected / otherPage.html”。

在这种情况下,asdf不是实际文件,但是otherPage.html是。因此,如果文件存在,它不会重定向,但如果不重定向则重定向。这是为什么?

1 个答案:

答案 0 :(得分:1)

处理静态文件app.use(express.static(path.join(__dirname, 'views')));的行显示在app.get('/protected')之前,因此首先匹配。

如果您将静态处理程序移动到代码中的后面,则可以根据需要使用它。

但是,我建议将静态项目拆分到一个单独的文件夹中,以防止意外泄露您可能包含在views文件夹中的ejs文件中的任何服务器端代码。