2017-03-11 1 views
0

404 요청에 의해 잘못된 파일 요청, 예를 들어 CSS 또는 이미지가 포착되는 문제가 있습니다. 정말 404 응답을 반환하고 싶지만이 경우 404 페이지를 렌더링하지 마십시오. 과거에는 nginx를 사용하여 파일 요청을 처리 했으므로 문제가되지 않았습니다. 그러나 표현이 파일 제공을 처리 할 때 이것을 수행하는 올바른 방법은 무엇입니까? 여기Node Express 404 파일 요청의 404 페이지 요청을 구별합니다.

은 내 현재의 경로 처리는 오류 처리 로직에 의해 다음에 -

app.use(express.static(path.join(rootPath, 'public'))); 
app.use('/', routes); 

// catch 404 and forward to error handler 
app.use(function(req, res, next) { 
    var err = new Error('Not Found'); 
    err.status = 404; 
    // respond with html page 
    if (req.accepts('html')) { 
    res.render('404', { url: req.url }); 
    return; 
    } 

    // respond with json 
    if (req.accepts('json')) { 
    res.send({ error: 'Not found' }); 
    return; 
    } 

    // default to plain-text. send() 
    res.type('txt').send('Not found'); 
    next(err); 
}); 

// error handlers 

// development error handler 
// will print stacktrace 
if (app.get('env') === 'development') { 
    app.use(function(err, req, res, next) { 
    res.status(err.status || 500); 
    res.render('error', { 
     message: err.message + " " + req.path, 
     error: err 
    }); 
    }); 
} 
+0

을 요청한 후 404 페이지를 다시 보내지 않으려는 파일 유형이라면'res.status (404) .end()'를 수행하십시오. – jfriend00

+0

이 목적을 위해 명백하게 보이는 요청 개체의 특정 속성을 보지 못했습니다. 그러나 미들웨어가 비슷한 방식으로 작동해야한다고 생각합니다. – user3205931

+0

'req.url'은 요청한 URL을 보여줍니다. URL 끝에있는 파일 확장자를 볼 수 있습니다. – jfriend00

답변

0

당신은 익스프레스 역할 정전기 미들웨어 사용할 수 있습니다 : 당신은 그냥 파일의 형식이되고 있습니다 볼 수 없습니다 https://expressjs.com/en/resources/middleware/serve-static.html

+0

죄송합니다. 응답 시간이 너무 오래 걸렸습니다. 이 미들웨어를 사용했지만 404 페이지로 리디렉션되지 않았습니다. 이를 위해이 솔루션을 포함했습니다. http://stackoverflow.com/questions/6528876/how-to-redirect-404-errors-to-a-page-in-expressjs – user3205931