捕获expressJS中的所有无效URL也会捕获静态或公共文件

时间:2012-08-28 11:39:48

标签: node.js connect express

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

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

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

2 个答案:

答案 0 :(得分: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 :(得分:1)

Express没有区分静力学和非静力学的原因有很多,这有时可能是一个问题,但它非常灵活。

我不确定expressjs have to differentiate static calls是什么意思,没有invalid url这样的东西,只是你如何解释任意字符串。