질문 : 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
'프로그래밍 언어 > PHP' 카테고리의 다른 글
PHP에서 날짜 형식 변환 (0) | 2021.07.20 |
---|---|
PHP 암호를위한 보안 해시 및 솔트 (0) | 2021.07.20 |
Laravel에는 Mcrypt PHP 확장이 필요합니다. (0) | 2021.07.16 |
PHP에서 유용한 오류 메시지를 얻는 방법 (0) | 2021.07.16 |
PHP에서 빈 배열에 요소를 추가하는 방법 (0) | 2021.07.15 |