2017-12-23 17 views
0

PHP로 과제를 수행 중이며 사소한 오류로 URL을 입력하면 301 리디렉션을 구현했습니다. 리디렉션이 실제로 어떻게 작동하는지 생각하게되었습니다. 나는 또한 디렉토리 끝에 슬래시없이 입력 할 때 아파치가 자동으로 리디렉션 것으로 나타났습니다301 리디렉션에 대한 세부 정보

header("Location: https://www.example.com");

:이 같은 매우 기본적인 것을 사용하고 있습니다. 결과는 같습니다.

제 생각에 서버는 301 상태와 적절한 위치 헤더를 가진 응답을 보냅니다. 이제 클라이언트가 다른 요청을해야합니까, 아니면 서버가 올바른 자원을 자동으로 보내나요? 또한 클라이언트가 리디렉션을 무시할 수 있습니까?

+2

클라이언트가 다른 요청을합니다. – Barmar

답변

3

리디렉션이 반환되면 클라이언트는 새 URL에 다른 요청을합니다. 리디렉션은 완전히 다른 서버에있을 수 있으므로 원래 서버가 올바른 리소스를 보낼 수 없습니다. 서버가 자체적으로 리소스를 반환 할 수있는 경우에도 클라이언트는 원래 위치가 아닌 해당 위치를 기준으로 상대 URL을 확인해야하므로 클라이언트는 새 URL을 알아야합니다.

클라이언트는 확실히 리디렉션을 무시할 수 있습니다. --location 옵션을 사용하면 curl 클라이언트는 리디렉션을 따르게됩니다. 대부분의 클라이언트는 리디렉션 루프를 방지하기 위해 단일 요청을 충족시키기 위해 따르는 리디렉션 수에 제한을두고 있습니다.

+0

리다이렉트 루프는 header()를 호출하는 PHP 스크립트를 가리 키도록 Location 헤더를 설정함으로써 쉽게 시연 할 수있었습니다. 무한 재귀처럼 보입니다. –