2012-05-10 1 views
21

이것은 상대 위치 html 헤더는 모든 플랫폼에서 모든 브라우저와 완벽하게 호환됩니까? 어떤 기준? 내 말은헤더 위치 상대 경로 호환성

Location: some_script.php?la=2&po=2030 

, 항상 현재 디렉토리 또는하지 some_script.php로 리디렉션됩니다?

+0

을, 심지어는 헤더에 대해 알 수 없습니다 브라우저, 그냥 그것을 통지 PHP가 서버에서 실행되기 때문에 리디렉션되고 있습니다. – 11684

+3

@ 11684 : 클라이언트의 브라우저는 절대적으로 위치 헤더를받습니다. 그 위치를 바꾸기로 결정한 다른 방법으로 생각하십니까? – webbiedave

+1

@ 11684 틀렸어. PHP가 서버에서 실행됩니다. 그러나 PHP는 브라우저 (클라이언트)에 헤더를 보내고 클라이언트는 원하는대로 수행합니다. –

답변

17

표준이 될 것이다 : 당신의 질문에 대답하지만 당신은 첫 번째 또는 완전한 URL에 슬래시를 넣어하지 않는 경우, 예는 현재 폴더에 페이지 X로 리디렉션됩니다

header('Location: http://www.mywebsite.com/yourpage.php?id=32', TRUE, 302); 

.

여기 내가하는 모든 웹 사이트에 대해 제안하는 아이디어가 있습니다. 기본 파일 (사용자가 설정 또는 무엇이든 같이 사용하는 주요 PHP 파일)에서, 그런 일을 만들 :

define('URL', 'http://www.mywebsite.com/'); 

당신이 리디렉션, 링크 또는 무엇이든을 만들 때, 당신이 수행

header('Location: '.URL.'yourpage.php?id=32', TRUE, 302); 

EDIT : 2017 년 11 월. @jordanbtucker가 지적한대로 2014 년 6 월 (이 게시물은 2012 년 이후) HTTP 사양이 업데이트되어 Location 헤더에 상대 URI가 허용됩니다.

+1

예, 저는 이미 ** 상대적 ** 변형과 그 작업을 사용하고 있습니다. 그러나 모든 사용자에게 적용되지는 않을지는 의심 스럽습니다. 절대 경로를 얻기 위해 URL의 일부를 추가 할 수 있지만 로컬 컴퓨터에서이 sctipt를 debbugging하는 데 문제가 발생할 것입니다. 왜냐하면 우리는 항상 http://domain.com/some_script.php에서 some_script.php를 사용하기 때문에 SERVER_HOST를 URL에 추가하는 대신 로컬 컴퓨터의 하위 폴더에 스크립트를 추가하는 중 ... – abrahab

+1

확인. 그런 다음 http://tools.ietf.org/html/rfc2616#section-10.3.3을 살펴보십시오. 좋은 방법, 최선의 방법 및 작동하는 방식은 전체 URL을 제공해야합니다. –

+0

@abrahab 로컬 컴퓨터의 하위 폴더에 전체 URL을 갖는 것이 왜 문제인지 이해할 수 없습니까? –