2016-06-02 2 views
0

나는 라이브 사이트를 가지고 있으며 현재 개발중인 현재 컴퓨터로 페이지를 리디렉션하려고합니다. 나는 다음을 시도했다.PHP가 localhost로 리디렉션

header('HTTP/1.1 307 Temporary Redirect'); 
header('Location: http://localhost/dev/test.php'); 

리디렉션은 라이브 서버의 로컬 호스트에는 수행하지 말고, 현재 개발을 위해 사용중인 로컬 컴퓨터에 수행해야한다. 이것은 단순히 내 사이트에 추가 한 지불 게이트웨이를 테스트하는 것입니다 (지불 게이트웨이에 올바른 URL이 필요하므로 localhost를 사용할 수 없습니다).

지불 게이트웨이는 현재의 내 컴퓨터로 리디렉션해야하는

http://www.example.com/test.php 

로 리디렉션됩니다 : PHP는이를 관리 할 수없는 경우

http://localhost/dev/test.php 

, 나는이 아파치 리디렉션과 함께 할 수 있습니까? 또한 라이브 서버에서 수신 한 모든 GET 및 POST 매개 변수를 로컬 페이지로 보내려고합니다.

+1

질문이 막연합니다 ... 확실히 리디렉션 헤더를 클라이언트에 보낼 수 있습니다. 예약 된 호스트 이름'localhost'는 항상 서버가 아닌 _client_에 의해 해석되므로 클라이언트 시스템을 가리킬 것입니다. 전체 흐름이 명확하지 않으므로 그 점이 도움이되는지 확실하지 않습니다 ... – arkascha

+0

모든 라이브 서버 CANT는 로컬 컴퓨터에 액세스합니다 .. 나는 또한 어떤 의미로도 추가 할 것입니다 .. 이것은 불가능합니다 .. 로컬 호스트는 귀하의 시스템에서 실행중인 서버 .. 그리고 라이브 시스템 – Sanchit

+0

에 액세스 할 수없는 경우 ipaddress를 제공합니까? – bhansa

답변

1

당신은 HTTP 1.1 헤더를 보낼 필요가 없습니다 그 작업에서 리디렉션을 방지 무슨 수 있습니다. 웹 서버는 상태 코드를 전송해야하기 때문에 자동으로이 웹 서버를 추가합니다. 대신, 헤더로 307 개 상태()의 세 번째 매개 변수를 전달합니다

header('location: http://localhost/some/url', true, 307); 

리디렉션 헤더를 브라우저에 의해 구문 분석, 이렇게됩니다 "localhost"를 브라우저가 실행되는 동일한 시스템이 될 것입니다.

당신이 URL에 $_SERVER['QUERY_STRING']을 추가 할 수있는 모든 GET 매개 변수를 전달하려면 :

header('location: http://localhost/some/url?' . $_SERVER['QUERY_STRING'], true, 307); 

POST 매개 변수는 더 복잡합니다. $ _POST 배열의 모든 것을 연결하여 고유 한 URL을 만들어야합니다. 값을 urlencode()하십시오.

$redirect_url = 'http://localhost/some/url?'; 
foreach($_POST as $key => $value){ 
    $redirect_url .= $key . '=' . urlencode($value) . '&'; 
} 
header('location: ' . $redirect_url, true, 307); 

그리고 POST 요청을 GET으로만 리디렉션 할 수 있습니다. 하지만 게이트웨이 통합 테스트를위한 모의 작업을하고 있다면 괜찮습니다.

0

localhost은 항상 클라이언트 컴퓨터에서 확인되므로 사용하지 않아야합니다.

header('Location: http://localhost/dev/test.php'); 

과 같이 서버의 도메인 이름으로 localhost를 바꾸기 :

header('Location: http://yourliveserver.com/dev/test.php'); 
+0

아니요, 라이브 서버로 리디렉션하지 않고 로컬 컴퓨터로 리디렉션하고 싶습니다. – goocreations

+0

라이브 사이트의 페이지를 로컬 컴퓨터로 리디렉션하고 싶습니까? 그런 다음 로컬 컴퓨터의 IP 주소를 사용하십시오. – chin

+0

예, 그게 무슨 뜻입니까. 라우터가 너무 비좁아서 DMZ 및 로컬 해석을 처리 할 수 ​​없기 때문에 자신의 IP를 사용할 수 없습니다. – goocreations

관련 문제