Node.js server “404 not found” message to 404.html page

前端 未结 5 1648
南旧
南旧 2021-01-04 16:50

Im working with node.js and I would like to know how to display a 404.html instead of a \"404 Not Found\" message.

This is my server.js:

var http = r         


        
相关标签:
5条回答
  • 2021-01-04 16:55

    H i ,

    within your 404 case

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

    You can change to

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

    'HTMLDATA' being either a string of HTML or a reference to a file you have gathered.

    response.writeHead() is always set before the response.write().

    Also see we have set the response type to 'text/html'


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

    0 讨论(0)
  • 2021-01-04 16:55

    Just load 404.html using fs.readFile and serve it with 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`
    
    0 讨论(0)
  • 2021-01-04 17:15

    Do just for the 200... Read a file 404.html and write it to the response, just set the code 404 in writeHead.

    0 讨论(0)
  • 2021-01-04 17:18
    response.writeHead(404, {
      'Location': 'your/404/path.html'
      //add other headers here...
    });
    response.end();
    

    or with a single line

    response.redirect('your/404/path.html');
    
    0 讨论(0)
  • 2021-01-04 17:19

    This might be more of what you're looking for.

        fs.readFile('404.html', function(error, data) {
            res.writeHead(404, {'content-type': 'text/html'});
            res.end(data);
        });
    
    0 讨论(0)
提交回复
热议问题