Node.js服务器“404找不到”消息到404.html页面

我正在与node.js工作,我想知道如何显示一个404.html,而不是“404 Not Found”消息。

这是我的server.js:

var http = require("http"), url = require("url"), path = require("path"), fs = require("fs") port = process.argv[2] || 8888; http.createServer(function(request, response) { var uri = url.parse(request.url).pathname , filename = path.join(process.cwd(), uri); path.exists(filename, function(exists) { if(!exists) { response.writeHead(404, {"Content-Type": "text/plain"}); response.write("404 Not Found\n"); response.end(); return; } if (fs.statSync(filename).isDirectory()) filename += 'public/Index/index.html'; fs.readFile(filename, "binary", function(err, file) { if(err) { response.writeHead(500, {"Content-Type": "text/plain"}); response.write(err + "\n"); response.end(); return; } response.writeHead(200); response.write(file, "binary"); response.end(); }); }); }).listen(parseInt(port, 10)); console.log("Static file server running at\n => http://localhost:" + port + "/\nCTRL + C to shutdown"); 

因为你可以看到它只是一个静态文件服务器,我不使用express.js或任何东西。

H我,

在你的404案件

  response.writeHead(404, {"Content-Type": "text/plain"}); response.write("404 Not Found\n"); response.end(); 

你可以改变

  response.writeHead(404, {"Content-Type": "text/html"}); response.write(HTMLDATA); response.end(); 

“HTMLDATA”可以是HTMLstring,也可以是对已收集文件的引用。

response.writeHead()总是在response.write()之前设置的。

另请参阅我们已将响应types设置为“text / html”


http://nodejs.org/api/http.html#http_class_http_serverresponse

 response.writeHead(404, { 'Location': 'your/404/path.html' //add other headers here... }); response.end(); 

或用一条线

 response.redirect('your/404/path.html'); 

做200只…读取文件404.html并写入响应,只需在writeHead中设置代码404。

只需使用fs.readFile加载404.html,并使用response.write提供

 var http = require("http"), url = require("url"), path = require("path"), fs = require("fs") port = process.argv[2] || 8888; http.createServer(function(request, response) { var uri = url.parse(request.url).pathname , filename = path.join(process.cwd(), uri); path.exists(filename, function(exists) { if(!exists) { fs.readFile('404.html', "binary", function(err, file) { if(err) { response.writeHead(404, {"Content-Type": "text/html"}); response.write("404 Not Found\n"); } else { response.writeHead(404); response.write(file, "binary"); } response.end(); return; } } if (fs.statSync(filename).isDirectory()) filename += 'public/Index/index.html'; fs.readFile(filename, "binary", function(err, file) { if(err) { response.writeHead(500, {"Content-Type": "text/plain"}); response.write(err + "\n"); response.end(); return; } response.writeHead(200); response.write(file, "binary"); response.end(); }); }); }).listen(parseInt(port, 10)); console.log("Static file server running at\n => http://localhost:" + port + "/\nCTRL + C to shutdown");`enter code here` 

这可能是更多的你正在寻找。

  fs.readFile('404.html', function(error, data) { res.writeHead(404, {'content-type': 'text/html'}); res.end(data); });