Para indicar um arquivo / recurso ausente e servir uma página 404, você não precisa redirecionar. Na mesma solicitação, você deve gerar a resposta com o código de status definido como 404 e o conteúdo da sua página HTML 404 como corpo da resposta. Aqui está o código de amostra para demonstrar isso em Node.js.
var http = require('http'),
fs = require('fs'),
util = require('util'),
url = require('url');
var server = http.createServer(function(req, res) {
if(url.parse(req.url).pathname == '/') {
res.writeHead(200, {'content-type': 'text/html'});
var rs = fs.createReadStream('index.html');
util.pump(rs, res);
} else {
res.writeHead(404, {'content-type': 'text/html'});
var rs = fs.createReadStream('404.html');
util.pump(rs, res);
}
});
server.listen(8080);