programing

Nodejs - 리디렉션 URL

javamemo 2023. 7. 29. 08:06
반응형

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

Express를 사용하는 경우JS, 다음을 사용할 수 있습니다.

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!

Https로 리디렉션

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

당신이 이것을 어디에 사용하는지 생각해 보세요(예: http 요청에 한해서만), 그래서 당신은 끝없는 리디렉션을 받지 않습니다 ;-)

사용해 보십시오.

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

기본값이 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);

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

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

다음 코드를 사용하십시오. 이 코드는 네이티브 노드js에서 정상적으로 작동합니다.

http.createServer(function (req, res) {
var q = url.parse(req.url, true);
if (q.pathname === '/') {
  //Home page code
} else if (q.pathname === '/redirect-to-google') {
  res.writeHead(301, { "Location": "http://google.com/" });
  return res.end();
} else if (q.pathname === '/redirect-to-interal-page') {
  res.writeHead(301, { "Location": "/path/within/site" });
  return res.end();
} else {
    //404 page code
}
res.end();
}).listen(8080);

사용하다

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

또는 다음과 같이 정의된 URI로 리디렉션할 수 있습니다.

res.redirect('/');

언급URL : https://stackoverflow.com/questions/4062260/nodejs-redirect-url

반응형