2013-05-23 1 views
0

다음 리디렉션 코드에서 들어오는 트래픽에 경로 및 쿼리 문자열 데이터가있는 경우 자동으로 재전송됩니까? 아니면 캡처하여 재전송해야합니까?PHP에서 페이지를 리디렉션 할 때 경로 및 쿼리 문자열은 어떻게됩니까?

예를 들어
if($_SERVER['SERVER_NAME'] == 'goose.com.au' || $_SERVER['SERVER_NAME'] == 'www.goose.com.au'){ 
    header("HTTP/1.1 301 Moved Permanently"); 
    header("Location: http://www.geese.com.au"); 
} 

는 트래픽이

http://www.geese.com.au/mother?request=need+new+hat 

에 자동으로 리디렉션 않습니다

http://www.goose.com.au/mother?request=need+new+hat 

로 오는 가정이나 나는 세부 사항을 캡처하고 그들을 재 서술 할 필요가 수행 " 위치:"?

후자의 경우 현재 최선의 기술은 무엇입니까?

답변

2

캡처하여 다시 전송해야합니다. 이와 같이 호스트가 교체되는 경우에는 $_SERVER['REQUEST_URI']을 사용하는 것이 안전해야합니다.

<?php 
if($_SERVER['SERVER_NAME'] == 'goose.com.au' || $_SERVER['SERVER_NAME'] == 'www.goose.com.au'){ 
    header("HTTP/1.1 301 Moved Permanently"); 
    header("Location: http://www.geese.com.au{$_SERVER['REQUEST_URI']}"); 
} 
2

아니, 당신은 헤더 ("위치 ...")에 직접해야한다.

나는이 간단한 해결책이라고 생각 :

header("Location: http://www.geese.com.au".$_SERVER['REQUEST_URI']); 

REQUEST_URI 인수에 대해 알고 $_SERVER에서 봐 주시기 바랍니다. 내 생각에 $ _SERVER [ 'REQUEST_URI]]의 동작은 시스템 구성에 따라 다릅니다.

관련 문제