2010-07-02 2 views
0

현재 내 웹 사이트에서 register.php? referal = gamestand를 사용하므로 사용자가 추천 웹 사이트를 통해 내 웹 사이트를 방문하면 그 곳에서 등록한 플레이어의 수를 추적 할 수 있습니다.URL 매개 변수를 제거하지만 보내 주려고 다시 작성

referal = gamestand는 자동으로 echo $ _GET [ 'code'];를 사용하여 등록 프로세스 내 입력 텍스트 필드를 채 웁니다.

문제는 ... Google에서 이러한 참조로 인해 많은 링크가 있으며 301 개를 내 register.php 페이지에 연결하여 SEO 점수를 하나로 합친 다음 결국이 바보 같은 register.php를 제거하겠습니까? code = Google의 gamestand 스타일 링크.

이 재 작성 규칙은 ...? code = gamestand 비트를 제거하지만 실제로 매개 변수를 전달하지 않습니다. 아마 리다이렉션과 아무 것도 보내지 않았을 것입니다. 이 코드 = gamestand register.php에 있지만 같은? register.php 변경됩니다

RewriteCond %{QUERY_STRING} ^(.*)code(.*)$ 
RewriteRule ^(.*)$ http://localhost/mywebsite/httpdocs/register.php? [R=301,L] 

는, $ _GET [ '코드'] 지금 비어 내가 원점으로 돌아 왔어요했다!

아무도 모른다면 어떤 도움을 주셔서 감사합니다 ... 감사합니다! Dom

+1

HTTP 리퍼러가 이미 헤더 필드가 아닌가? 그것을 매개 변수로 전달해야합니까? – Pace

+0

좋은 생각 ... 나는 정직하기 전에 이것을 잡으려고하지 않은 이유를 모르겠다. – Intellix

답변

0

세션 변수에 리퍼러를 저장 한 다음 코드없이 register.php으로 리디렉션 할 수 있습니다. URL에 코드가 더 이상 포함되지 않지만 세션을 통해 사용할 수 있습니다.

session_start(); 
if (isset($_GET['code'])) { 
    $_SESSION['code'] = $_GET['code']; 
    header('Location: register.php'); 
    exit; 
} 

... 

echo $_SESSION['code']; 
0

이러한 URL을 동일한 URL로 리디렉션하면 검색 엔진 최적화 점수가 하나로 합쳐지지 않을 것입니다. 현재의 방법은 괜찮습니다.