2012-02-19 2 views
4

PHP을 사용하여 한 사이트에서 다른 사이트로 모든 GET 쿼리를 리디렉션한다고 가정합니다.
POST 쿼리가 시스템에 존재하지 않습니다. 사용자가한 사이트의 모든 GET 쿼리를 다른 사이트로 리디렉션

www.mysite.com/index.php?action=myAction&pageno=2 

에 연결

예를 들어

, 나는 그를이로 리디렉션 할 :

www.mySecondSite.com/index.php?action=myAction&pageno=2 

나는 각각의 가능한 모든 $_GET 변수에 대한 하드 코딩 된 코드를 작성 얻을 수 있습니다 (필자의 예에서는 myActionpageno), 합리적인 해결책처럼 들리지는 않습니다. 또한, 나는 아파치 서버의 설정을 변경하는 것을 포함하는 this 해결책을 보았다. 일 수 없다고 가정하면 서버 구성을 변경하십시오.

물론 모든 변수와 값을 가져 와서 다른 사이트로 리디렉션 할 수있는 방법이 있어야합니다.

답변

4

첫 번째에서 사용할 수있는 쿼리 문자열의 내용 당신은 내 로컬 서버에 대한 예를 들어 전체 URL을 얻을해야합니다

http://localhost/server_var.php?foo=bar&second=something 

함께 $_SERVER 변수를 인쇄 해보십시오 print_r() :

print_r($_SERVER); 

당신이 얻을이 같은 결과를해야합니다, manual page에서 살펴 더 많은 정보

Array 
(
    ... 
    [REQUEST_URI] => /server_var.php?foo=bar&second=something 
    ... 
) 

그래서 지금 당신은 당신의 URL이 있습니다

$url = 'http://www.mySecondSite.com' . $_SERVER['REQUEST_URI']; 

을 그리고 당신은 사용할 수 있습니다 header()을 사용하여 요청 리디렉션 :

header('Location: ' . $url); 
헤더 : 당신이 302 Found (기본값) 또는 307 Temporary Redirect을 사용할지 여부를

나는

두 번째 특별한 경우는 "위치"입니다 ... HTTP status codes, 3xx들에서 살펴 보는 것이 좋습니다. 이 헤더를 브라우저에 다시 보낼뿐만 아니라 201 또는 3xx 상태 코드가 이미 설정되어 있지 않으면 REDIRECT (302) 상태 코드를 브라우저에 반환합니다.

그래서 당신은이 작업을 수행 할 수 있습니다

header('HTTP/1.0 307 Temporary Redirect'); 
header('Location: ' . $url); 
+0

302 리디렉션이 아닙니다. http://en.wikipedia.org/wiki/HTTP_302 – dynamic

+0

@ yes123 나는 내 대답을 제공했습니다 ... "307 임시 리디렉션", "302 발견"이라는 "HTTP 코드의 w3c"입니다. (HTTP 상태 코드에 대한 링크를 클릭하십시오.) 개인적으로 w3.org가 wiki보다 더 안정적이라고 생각합니다. – Vyktor

+0

2 사이의 차이는 매우 가볍습니다 .. 나는 임시 리디렉션을 위해 302와 개인적으로 붙어 있습니다. – dynamic

2

의 .htaccess에 리디렉션 갈 수있는 방법이 될 것이나, 당신은 당신이 당신의 index.php 파일에 301 코드 조건부 헤더를 삽입 할 수 변경할 수없는 말한다면 : 당신은이 http://php.net/manual/en/function.header.php

모든 $_SERVER['QUERY_STRING']

4

쓰기이 PHP 코드를 당신의 HTML 태그 이전의 index.php 페이지의 상단에.

<? 
$newUrl = "www.mySecondSite.com/index.php"; 
if (!empty($_GET)){ 
$parameter = $_GET; 
$firstTime = true; 
foreach($parameter as $param => $value){ 
    if ($firstTime) { 
     $newUrl .= "?" . $param . "=" . $value; 
     $firstTime = false; 
    } else { 
     $newUrl .= "&" . $param . "=" . $value; 
    } 
} 
} 
header("Location: ".$newUrl); 
/* Make sure that code below does not get executed when we redirect. */ 
exit; 
?> 
+0

호기심에서 벗어나서, 당신이'http_build_query $ _GET)'루프 대신에? – Hobo

관련 문제