在Express中使用*路由时,从不存在的静态内容发送404头

我有这样的快速应用程序。

var express = require('express'); var http = require('http'); var path = require('path'); var app = express(); // all environments app.set('port', process.env.PORT || 3000); app.set('views', __dirname + '/views'); app.set('view engine', 'ejs'); app.use(express.favicon()); app.use(express.logger('dev')); app.use(express.bodyParser()); app.use(express.methodOverride()); app.use(express.cookieParser()); app.use(express.static(path.join(__dirname, 'public'))); app.use(app.router); app.get('*', function(res,req) { req.render('index', {title: "Title"}); }); http.createServer(app).listen(app.get('port'), function () { console.log('Express server listening on port ' + app.get('port')); }); 

由于使用app.get('*')请求不存在静态文件响应与呈现index.ejs文件,而不是错误404。

有没有办法解决它没有额外的条件在路线?

只需添加如下内容:

 app.get(/\/(js|css|img)\/.*/, function (req, res) { res.send(404); }); 

app.get('*') 。 任何对静态中间件尚未匹配的/js请求都会引用一个不存在的文件。

解决了nginx代理的问题