2013-03-08 1 views
1

나는 이걸 어디서부터 시작해야할지 모르겠다.PHP에서 조건부 301을 수행 할 수 있습니까?

기본적으로 나는 SEO에 친구가 있으며, 그의 고객 사이트 중 하나가 특정 웹 호스팅 서비스에 의해 복제되었으며 사본이 꺼져 있음에도 불구하고 삭제되지 않았습니다. 문제의 미리보기 사이트는 실제 고객 사이트보다 높은 PR을 가지므로 SEO는 완전히 파괴되고 있습니다.

상황을 극복하기 위해 관리해온 유일한 컨트롤은 .htaccess가 아닌 파일이 클라이언트의 서버에서 전파된다는 것입니다. 기본적으로, 그것은 괴상한 악몽입니다.

내가 제안하는 것은 PHP 헤더 파일에 조건부 리디렉션을 설정하여 브라우저/엔진이 미리보기 사이트에 도달하면 클라이언트 사이트에 301이 표시되도록합니다. 그러나 브라우저/엔진이 올바른 사이트를 방문한다면 아무 것도 할 필요가 없습니다.

시범 & 오류로 구문을 알아낼 수는 있지만 문제가되는 클라이언트가 곧바로 하데스로가는 SEO 캠페인을 가지고 있기 때문에 일종의 시간에 민감합니다.

여기 누군가가 조건부 리디렉션을 형식화하는 방법을 알기를 바랍니다.

이의 두 도메인을 부르 자 : 보조에 대한

previewdomain.com domain.com

그래서 느슨하게 말하기 ...

if current url == previewdomain.com then 301 redirect to domain.com 
else do nothing 

감사합니다!

+0

예, 가능합니다. 그것을 작성해야합니다. 'if()'와'$ _SERVER' 변수를 포함합니다. 어떤 것을 찾으려면'print_r ($ _ SERVER)'를 시도해보십시오. – Sammitch

답변

3

이 할 수 있습니다 :

if(stripos($_SERVER['HTTP_HOST'],"previewdomain.com") !== false) { 
    header("Location: http://domain.com".$_SERVER['REQUEST_URI'],true,301); 
    exit; 
} 
+0

Ok 당신과 Andrew 사이 어느 쪽이 가장 올바른지 잘 모르겠습니다 ... – Imperative

+0

필자는 개인적으로'$ _SERVER [ 'REQUEST_URI']'를 선호하지만,'PHP_SELF'는 재 작성으로 인해 다를 수 있습니다. – Wrikken

+0

도메인 이름이 모두 소문자가 아닌 경우 (예 : PREVIEWDOMAIN.COM') 광산이 처리하는 경우를 제외하고는 기능적으로 동일합니다. 사용자가 요청한 것처럼 '301'을 사용하고 광산에서는 '302'를 사용합니다. Andrew 's가 301을 보내려고 시도하는 것처럼 보이지만 302에 의해 덮어 쓰여지는 것처럼 보이기 때문에 그것이 사실인지 확실하지 않습니다. 아, 또한 리다이렉트가 발생하면 현재 스크립트를 끝내기 위해 죽습니다. –

2
<?php 
if(strpos($_SERVER['HTTP_HOST'], 'previewdomain.com') !== FALSE) { 
    header("HTTP/1.1 301 Moved Permanently"); 
    header("Location: http://www.domain.com"); 
} 
+0

이제이 두 가지가 가장 정확한지 잘 모르겠습니다! – Imperative

+0

광산은 301 리디렉션 헤더를 출력하기 때문에 정확합니다. 다른 대답은 없습니다. – Andrew

+0

참고로 'header ("Location : http://www.domain.com", true, 3013); – Wrikken