151 votes

Nodejs - URL de redirection

Lorsque l'utilisateur entre l'URL incorrecte, le serveur de noeud js sera redirigé vers la page 404.html, comment puis-je l'implémenter sur nodejs.

Effectuez une recherche et cela me renvoie à expressjs (il ressemble à un wrapper nodejs) mais je veux écrire dans nodejs.

241voto

Chetan Sastry Points 14742

La logique de détermination d'une "mauvaise" URL est spécifique à votre application. Cela pourrait être un simple fichier non trouvé d'erreur ou autre chose si vous faites une application RESTful. Une fois que vous avez compris cela, envoyer une redirection est aussi simple que:

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

88voto

Il est possible d'utiliser:

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

18voto

Chandru Points 4770

Pour indiquer un fichier / une ressource manquant (e) et servir une page 404, vous n'avez pas besoin de rediriger. Dans la même demande, vous devez générer la réponse avec le code d'état défini sur 404 et le contenu de votre page HTML 404 en tant que corps de réponse. Voici l'exemple de code pour illustrer cela dans 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);
 

16voto

Levit Points 760

Pour afficher un 404 avec un contenu individuel / corps HTML:

 res.writeHead(404, {'Content-Type': 'text/plain'});                    // <- redirect
res.write("Looked everywhere, but couldn't find that page at all!\n"); // <- content!
res.end();                                                             // that's all!
 

Ou si vous souhaitez rediriger toutes les demandes de c'est http équivalent, vous pourriez faire quelque chose comme ceci:

 res.writeHead(302, {'Location': 'https://example.com' + req.url});
res.end();
 

(Ce qui est plutôt stupide, s'il est utilisé pour gérer les requêtes https (aussi), mais pourrait être utile sinon ^^)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X