programing

Nodejs-리디렉션 URL

nasanasas 2020. 8. 14. 07:52
반응형

Nodejs-리디렉션 URL


사용자가 잘못된 URL을 입력 할 때 node.js 서버를 404.html 페이지로 리디렉션하려면 어떻게해야합니까?

몇 가지 검색을했는데 대부분의 결과가 Express에 해당하는 것처럼 보이지만 순수한 node.js로 서버를 작성하고 싶습니다.


"잘못된"URL을 결정하는 논리는 애플리케이션에 따라 다릅니다. RESTful 앱을 수행하는 경우 간단한 파일을 찾을 수 없음 오류 또는 다른 것일 수 있습니다. 이 사실을 파악한 후 리디렉션을 보내는 것은 다음과 같이 간단합니다.

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

다음을 사용할 수 있습니다.

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

누락 된 파일 / 리소스를 표시하고 404 페이지를 제공하려면 리디렉션 할 필요가 없습니다. 동일한 요청에서 상태 코드를 404로 설정하고 404 HTML 페이지의 콘텐츠를 응답 본문으로 사용하여 응답을 생성해야합니다. 다음은 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);

콘텐츠 / 본문이있는 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!

HTTP를 리디렉션

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

이것을 사용하는 고려 하십시오 (예 : http 요청에만 해당), 그래서 당신은 끝없는 리디렉션을 얻지 않습니다 ;-)


기본값은 404 인 switch 문을 사용했습니다.

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

이 시도:

this.statusCode = 302;
this.setHeader('Location', '/url/to/redirect');
this.end();

다음 코드를 사용해야합니다.

response.writeHead(302 , {
           'Location' : '/view/index.html' // This is your url which you want
        });
response.end();

참고 URL : https://stackoverflow.com/questions/4062260/nodejs-redirect-url

반응형