1

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

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

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

4

2 回答 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将首先尝试找到一个静态文件。

于 2012-08-28T11:48:17.963 回答
1

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

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

于 2012-08-28T16:00:38.137 回答