2013-02-28 2 views
0

Я перехожу к новому доменному имени, и мне нужно перенаправить все входящие ссылки на новое доменное имя. Все страницы находятся на обоих сайтах.Перенаправление 301 относительно url в php

(напр .: 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, я бы просто сравнить два хостов и перенаправления, если они не равны
  • Вам нужно всего лишь один 301 заголовок
  • Htaccess будет значительно быстрее, чем при использовании PHP для этого, особенно если у вас есть файл .htaccess уже

Имея это в виду, я бы, вероятно, переписать код, как:

<?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 verison (предполагается, что mod_rewrite включен) будет:

RewriteEngine On 

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

Спасибо за эти советы. – SimonD

0

301 примерно такой же, как и для SEO. Это указывает паукам, что страница постоянно перемещается.

Смежные вопросы