在expressJS中捕获所有无效url也是捕获静态或公共文件

问题描述 投票:0回答:2

我使用的是expressJs 3.x和node 0.8.8。在我的应用程序中,我尝试捕获所有无效的网址。所以我添加了以下代码。它工作正常,如果我尝试访问公共或静态文件,它也会捕获 url。

app.all('/*', function(req, res){
    \\ Do some action like redirecting or whatever ...
});

如何避免或传递静态文件夹文件(GET 请求)以及如何仅捕获无效网址?

node.js express
2个回答
6
投票

最有可能的是,您在

app.use(app.router)
之前调用
app.use(express.static(...))
,因此
express
首先尝试查找匹配的路由,并且仅当没有匹配的路由时,它才会尝试查找相应的静态文件。

配置代码应该是这样的:

app.configure(function () {
    app.use(express.static(__dirname + '/public'));
    app.use(app.router);
});

这样

express
会首先尝试查找静态文件。


1
投票

有很多原因

Express
不区分静态和非静态,这有时可能是一个陷阱,但它非常灵活。

我不确定你所说的

expressjs have to differentiate static calls
是什么意思,没有
invalid url
这样的东西,这只是你解释任意字符串的方式。

© www.soinside.com 2019 - 2024. All rights reserved.