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

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

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

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

最有可能的是,你在app.use(express.static(...)) app.use(app.router)之前调用app.use(app.router) ,这样express尝试find匹配的路由,并且只有当没有匹配的路由时试图find相应的静态文件。

configuration代码应该是这样的:

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

这样express会先尝试find一个静态文件。

Express没有区分静态和非静态的原因有很多,这可能有点棘手,但是非常灵活。

我不确定expressjs have to differentiate static calls什么意思, expressjs have to differentiate static calls ,没有这样的事情, invalid url ,它只是如何解释一个任意的string。