Иногда приходится сталкиваться с ситуациями, когда необходимо переместить какие-то страницы с сайта (в пределах сайта или на другой сайт), а то и весь сайт на другой домен. К примеру у Вас обновляется структура сайта, или у Вас было несколько сайтов, и Вы решили их собрать в один, или просто склеиваете сайты с www и без.
Но что делать с тем, что Ваш сайт или Ваши сайты проиндексированы поисковыми системами и выдаются в поисковых запросах на первых местах, наростили большую ссылочную массу, пути указаны в рекламных материалах и т.п.? Как все это не потерять? К тому же при переносе контента существует опасность, что поисковые роботы сочтут Ваш контент за неуникальный, взятый с Ваших прошлых сайтов.
На самом деле решение есть. Нужно всего лишь на старых страницах выдавать правильный редирект с ошибкой 301 (Страница перемещена навсегда. 301 Permanent Redirect) и указанием правильного адреса новой страницы. Сделать это можно несколкими способами.
Способ первый. Редирект с помощью модуля mod_rewrite (файл .htaccess):
Если основной домен без www.
Options +FollowSymLinks RewriteEngine On RewriteCond %{HTTP_HOST} ^www\.(.*) [NC] RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
В данном случае мы производим "склейку" сайтов с www и без www.
Строка RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]. Здесь указывается условие редиректа. В данном случае это наличие www. в адресе страницы.
Строка RewriteRule ^(.*)$ http://%1/$1 [R=301,L] подменяет адрес, удаляя поддомен www и передает ошибку от сервера 301, указывая, что страница перемещена на новый адрес навсегда.
Если же наоборот основной сайт с www и надо всем страницам добавить www.
Options +FollowSymLinks RewriteEngine On RewriteCond %{HTTP_HOST} ^yourdomain\.ru$ [NC] RewriteRule ^(.*)$ http://www.yoirdomain.ru/$1 [R=301,L]
Способ второй. С помощью PHP-скрипта.
Если Вам надо перенести только некоторые страницы, то наверняка гораздо удобнее будет использовать PHP-скрипт.
<?php // Указываем адрес страницы, на которую будет осуществлен редирект $newURL = 'http://newdomain.ru/page_address.html';
// Отправляем статус страницы "Перемещена навсегда" header("HTTP/1.1 301 Moved Permanently");
// Отправляем заголовок редиректа на новую страницу header("Location: $newURL");
// Прекращаяем выполнение скрипта (необязательно) exit(); ?>
! Имейте ввиду, что выполнение скрипта (отправление заголовков) необходимо производить до вывода любого текста. Любой лишний символ, даже пробел, выведеный раньше отправки этих заголовков, приведет к невозможности отправить эти заголовки, то есть к ошибке.
Эти меры помогут не только корректно перенести страницы, но и сохранить Google PR, что согласитесь, совсем не мало важно.