프로그래밍 언어/PHP

PHP에서 리디렉션(redirect) 하는 방법

Rateye 2021. 7. 16. 10:13
728x90
반응형

 

질문 : PHP에서 어떻게 리디렉션합니까?

PHP를 사용하여 사용자를 다른 페이지로 리디렉션 할 수 있습니까?

www.example.com/page.php 로 이동하여 www.example.com/index.php로 리디렉션하고 싶다고 www.example.com/index.php 해 보겠습니다. 메타 새로 고침을 사용하지 않고 어떻게해야합니까? 가능할까요?

이것은 권한이없는 사용자로부터 내 페이지를 보호 할 수도 있습니다.

답변

기존 답변과 내 2 센트 요약 :

header() 함수를 사용하여 새 HTTP 헤더를 보낼 수 있지만 HTML이나 텍스트 이전에 (예를 들어 <!DOCTYPE ...>

header('Location: '.$newURL);

die () 또는 exit ()

header("Location: http://example.com/myOtherPage.php");
die();

die() 또는 exit() 를 사용해야하는 이유 : The Daily WTF

절대 또는 상대 URL

2014 년 6 월부터 절대 및 상대 URL을 모두 사용할 수 있습니다. 절대 URL 만 허용 된 이전 RFC 2616을 대체 한 RFC 7231 을 참조하십시오.

상태 코드

PHP의 "위치"-헤더는 여전히 HTTP 302- 리디렉션 코드를 사용합니다. 이것은 "임시"리디렉션이며 사용해야하는 것이 아닐 수도 있습니다. 301 (영구 리디렉션) 또는 303 (기타) 중 하나를 고려해야합니다.

참고 : W3C는 303 헤더가 "많은 HTTP / 1.1 이전 사용자 에이전트와 호환되지 않는다고 언급합니다. 현재 사용되는 브라우저는 모두 HTTP / 1.1 사용자 에이전트입니다. 스파이더 및 로봇과 같은 다른 많은 사용자 에이전트에는 해당되지 않습니다.

HTTP 헤더와 PHP header()

http_redirect($url); 의 대체 방법을 사용할 수 있습니다. PECL 패키지 pecl 을 설치해야합니다.

이 함수는 303 상태 코드를 포함하지 않습니다.

function Redirect($url, $permanent = false)
{
    header('Location: ' . $url, true, $permanent ? 301 : 302);

    exit();
}

Redirect('http://example.com/', false);

이것은 더 유연합니다.

function redirect($url, $statusCode = 303)
{
   header('Location: ' . $url, true, $statusCode);
   die();
}

언급했듯이 header() 리디렉션은 아무것도 작성되기 전에 만 작동합니다. HTML 출력 중에 호출 되면 일반적으로 실패합니다. 그런 다음 다음과 같은 HTML 헤더 해결 방법 (매우 전문적이지 않습니다!)을 사용할 수 있습니다.

 <meta http-equiv="refresh" content="0;url=finalpage.html">
              

또는 JavaScript 리디렉션도 가능합니다.

window.location.replace("http://example.com/");
              
출처 : https://stackoverflow.com/questions/768431/how-do-i-make-a-redirect-in-php
728x90
반응형