2013-02-28 5 views
0

새 도메인 이름으로 이동하고 들어오는 모든 링크를 새 도메인 이름으로 리디렉션해야합니다. 모든 페이지는 두 웹 사이트에 있습니다.PHP에서 URL을 기준으로 301 리디렉션

(예 : www.oldsite.com/services.php 및 www.exemple.com/services.php가 활성와 동일한 상표입니다.)

내 코드는 SEO하기 쉬운 경우 알고 싶습니다

.htaccess 파일을 망치지 않고.

<?php 
$referer = $_SERVER['SERVER_NAME']; 
$domain = "www.exemple.ca"; 
$uri = $_SERVER['REQUEST_URI']; 

if(strpos($referer,$domain) === false) { 
    header("HTTP/1.1 301 Moved Permanently"); 
    header("Status: 301 Moved Permanently"); 
    header("Location: http://www.exemple.ca$uri"); 
    exit(0); 
} ?> 
+0

이 htaccess로를 통해 (두 줄) –

+0

나에게 유효 보이는 것을 할 일이 많이 쉬워 질 것입니다. –

답변

1

몇 가지 포인트 :

  • 당신은 아마 HTTP_HOST (호스트 이름이 요청)하지 SERVER_NAME합니다.
  • , 난 그냥 두 호스트 이름을 비교하며 동일하지 않을 경우 리디렉션 것, 당신이 어떤 하위 도메인을 사용하지 않는 strpos를 사용할 필요가 없습니다 가정에만
  • htaccess로 상당히 것 하나 301 헤더를 필요
  • 당신은 아마 당신의 코드를 다시 작성할 것 마음에와 htaccess로 이미 파일

이 경우 특히,이 PHP를 사용하는 것보다 더 빠르게 :

<?php 
$referer = $_SERVER['HTTP_HOST']; 
$domain = "www.exemple.com"; 
$uri = $_SERVER['REQUEST_URI']; 

if($referer != $domain) { 
    header("Location: http://www.exemple.ca$uri" true, 301); 
    exit(0); 
} ?> 

GET 요청에 대해서만이 작업을 수행 할 수도 있습니다.

htaccess로의적인 버전은 (가정 mod_rewrite를 사용하도록 설정) 다음과 같습니다

RewriteEngine On 

RewriteCond %{HTTP_HOST} !(^www.exemple.ca) 
RewriteRule (.*) http://www.exemple.ca/$1 [R=301,L] 
+0

감사합니다. – SimonD

0

301은 대략 SEO 친화적입니다. 그것은 거미에게 페이지가 영구히 움직 였다는 것을 나타냅니다.