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); });