在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代理的问题