6 ответов:
логика определения "неправильного" url специфична для вашего приложения. Это может быть простой файл не найден ошибка или что-то еще, если вы делаете спокойного приложения. Как только вы это поняли, отправка перенаправления так же просто, как:
response.writeHead(302, { 'Location': 'your/404/path.html' //add other headers here... }); response.end();
чтобы указать отсутствующий файл / ресурс и обслуживать страницу 404, вам не нужно перенаправлять. В том же запросе вы должны создать ответ с кодом статуса 404 и 404 страницы так же, как тело ответа. Вот пример кода, чтобы продемонстрировать это в узел.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);
404 с содержимым / телом
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!перенаправление на Https
res.writeHead(302, {'Location': 'https://example.com' + req.url}); res.end();просто считать здесь вы используете это (например, только для http-запроса), поэтому вы не получаете бесконечные перенаправления ; -)
я использовал оператор switch, по умолчанию 404:
var fs = require("fs"); var http = require("http"); function send404Response (response){ response.writeHead(404, {"Content-Type": "text/html"}); fs.createReadStream("./path/to/404.html").pipe(response); } function onRequest (request, response){ switch (request.url){ case "/page1": //statements break; case "/page2": //statements break; default: //if no 'match' is found send404Response(response); break; } } http.createServer(onRequest).listen(8080);
Comments