Как правильно перенести сайт на новое доменное имя

Как правильно перенести сайт на новый домен. Выдержки из найденного в интернете. Перенос сайта — это к сожалению не тривиальная задача как может показаться сначала. Встречается ОЧЕНЬ много подводных камней. В любом случае не обойтись без определенных потерь. Посмотрим как можно минимизировать проблемы, которые могут возникнуть при переносе.

Начнем с первоисточников

Переадресация 301 — http://www.google.com/support/webmasters/bin/answer.py?answer=93633

Зеркала сайтов для Яндекса — http://help.yandex.ru/webmaster/?id=996567#996574

Определяем главное зеркало для Яндекса:

Для это нам потребуется внести изменения в robots.txt
Чтобы главным зеркалом Яндекс считал адрес вида www.site.ru, то прописываем следующее:

User-agent: Yandex
Disallow:
Host: www.site.ru

и соответственно если мы хотим основное зеркало сайта вида site.ru

User-agent: Yandex
Disallow:
Host: site.ru

Определяем главное зеркало для Google:

Для определения главного зеркала сайта для Google  используется следующий метод:

Для этого необходимо зарегистрировать сайт в сервисе Google Инструмент для веб-мастеров

После этого нужно подтвердить права на управление сайтом. Изучив инструкцию, все можно понять.

Затем переходим по ссылке “Настройки” – “Основной домен” и ставим галочку, что необходимо. Сохраняем. Все готово.

301 редирект www на без-www

Применяется когда нужно перенаправить с URL вида http://www.site.ru на http://site.ru.

Необходимо вносить изменения в файл .htaccess в корневой директории сайта.

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.site\.ru$ [NC]
RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L]

Редирект всех файлов в папке на один файл

Если вам больше не нужен определенный раздел сайта (например new1) и нужно перенаправить все запросы к папке (/new1) на один файл /new.php

Для этого в .htaccess добавляем следующий код

RewriteRule ^new1(.*)$ /new.php [L,R=301]

В случае если требуется перенаправить все файлы кроме одного, например:
все файлы из папки /new1 должны редиректится на файл /new.php, кроме файла /new1/photos.html, который должен перенаправляться на /new_photos.html, пишем следующий код:

RewriteRule ^new1/photos.html /new_photos.html [L,R=301]
RewriteRule ^new1(.*)$ /new.php [L,R=301]

Редирект динамического URL на новый файл

Если есть необходимость сделать редирект динамического URL на новый статический файл

RewriteRule ^article.jsp?id=(.*)$ /news.htm [L,R=301]

То есть теперь, запрос к файлу вида http://www.site.ru/article.jsp?id=3232 и/или http://www.site.ru/article.jsp?id=8745 будет отправлен на файл http://www.site.ru/news.htm

Редирект с помощью директивы Redirect или RedirectPermanent модуля mod_alias

Для использования необходимо включить модули mod_alias (для поддержки директив Redirect, RedirectPermanent и RedirectMatch) и/или mod_rewrite (для использования реврайта) в php.ini

Redirect 301 /old-page.html http://new-domain.ru/new-page.html
или
Redirect permanent /old-page.html http://new-domain.ru/new-page.html

Однако, у этого способа есть недостаток – все адреса, которые необходимо перенаправить, нужно перечислять один за одним, каждый отдельно.

Как сделать редирект с index.php на корень сайта.

Для редиректа 301 вида “ваш_сайт/index.php” на “http://ваш_сайт/” :

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ http://ваш_сайт/ [R=301,L]

—————————————————————————————————————————————

Перенос сайта на новый домен с минимальными потерями

Автор Александр aka Alek$, блог http://nevkontakte.org.ru

Вопрос о том, как правильно перенести сайт на новый домен всегда был актуальным, а в свете недавнего решения Координационного ценрта о необходимости обязательного подтверждения паспортных данных для регистрации и продления доменов в зоне RU вопрос встает с еще большей остротой – ведь далеко не все хотят жестко связывать свое имя со своими сайтами.

Я хочу поделиться методом переноса сайта на новый домен, который поможет как можно меньше потерять на таком переезде.

Условия задачи:

Для определенности и простоты изложения будем исходить из следующий условий:
•    Мы хотим переехать с домена example.ru на example.com
•    Наш сайт доступен по обоим этим доменам, т. е. они оба припаркованы на один и тот же сервер и папку.
•    Рассматриваем только Яндекс и Гугль как две основные ПС, example.ru проиндексирован ими, а example.com – нет.

Решаем задачу

Главная сложность состоит в том, что Яндекс в упор не понимает 30x редиректов и если просто поставить этот редирект, то старый сайт из индекса вылетит, а вот проиндексируется ли новый – непонятн; Гугль, в свою очередь, игнорирует директиву Host из robots.txt, на которую ориентируется Яндекс.
Поэтому миграция будет осуществляться в два этапа: для Яндекса и для Google.

Этап первый. В robots.txt для обоих доменов прописываем директиву
Host: example.com
и для нового домена добавляем так же:
User-agent: Googlebot
Disallow: /

Это позволит нам в течение первого периода избежать санкций от гугля за дублированный контент.
Единственная сложность состоит в том, что у нас robots.txt физически один и тот же для обоих доменов. Тем не менее, это легко преодолеть, либо разруливая запросы на разные файлы с помощью .htaccess и mod_rewrite, либо с помощью вспомогательного скрипта, который вы найдете в конце поста.

После того, как robots.txt приведен в надлежащий вид, нам нужно дождаться, пока Яндекс не обнаружит зеркало и не сделает его основным. После этого можно заняться Гуглем.

Этап второй. Для переопределения основного домена для Гугля нужно установить 301-й редирект со старого домена на новый, при чем обязательно с сохранением страниц. Т. е. адрес http://example.ru/page1.html должен перенаправляться на http://example.com/page1.html.

Это делается при помощи такого кода в .htaccess:
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !example.com
RewriteRule (.*)
http://example.com/$1 [R=301,L]

При этом, важно не забыть убрать из robots.txt запрет Гуглю индексировать example.com ;-)

Теперь осталось дождаться переиндексацией гуглом и радоваться новому домену! Если все сделать аккуратно и правильно, то новый домен не только успешно заменит старый, но и наверняка переймет его пузомерки, что тоже приятно сердце вебмастера.

Использование вспомогательного скрипта

Сам по себе, скрипт крайне прост – он считывает ваш robots.txt, добавляет к нему нужные инструкции и отдает в браузер/поисковому боту. Установка и настройка:

1.    Находим в коде скрипта строку
define(‘NEW_DOMAIN’, ‘example.com’); // Новый домен
и заменяем в ней example.com на ваш новый домен.
2.    Помещаем скрипт в корневую папку сайта под именем robots.php
3.    В .htaccess добавляем код:
RewriteEngine On
RewriteRule robots.txt robots.php
4.    Открываем в браузере http://example.com/robots.txt и http://example.ru/robots.txt и убеждаемся, что скрипт работает и отдает разный код в зависимости от домена.

По завершении переиндексации Яндексом вы просто удаляете добавленные строки из .htaccess и сам скрипт.

<?php
/**
 Domain Migration Helper
 Author: Alek$ <aleks@aradmin.org.ru> http://nevkontakte.org.ru
*/
/*
Краткая инструкция:
Миграция на новый доменосуществляется в два этапа:
1) Определение основного зеркала для Яндекса
2) Аналогично для гугла.

Данный скрипт предназначен для использования на первом этапе, когда для разных зеркал необходимо отдавать разный robots.txt
Констанда NEW_DOMAIN должна содержать новый домен (без http://)
Чтобы скрипт работал в течение первого этапа в .htaccess должен присутствовать такой код:

RewriteEngine On
RewriteRule robots.txt robots.php

Это обсепечит подмену вашего robots.txt скриптом.
ПРИМЕЧАНИЕ: если у вас уже есть robots.txt с инструкциями, то можете не беспокоиться - скрипт просто добавит к ним свои и они не будут потеряны.
*/

define('NEW_DOMAIN', 'robots-new.lh'); // Новый домен

header('Content-Type: text/plain');

$domain = $_SERVER['HTTP_HOST'];
$robots = @file_get_contents('robots.txt');

if($domain == NEW_DOMAIN)
{
 echo "User-agent: Googlebot\nDisallow: /\nUser-Agent: *\n";
 echo "$robots\n";
 echo "Host: ".NEW_DOMAIN;
}
else
{
 echo "$robots\n";
 echo "Host: ".NEW_DOMAIN;
}
?>

Разруливание robots.txt через .htaccess

Если вы по каким-то причинам не хотите использовать скрипт, то можно того же эффекта добиться и с помощью mod_rewrite, хоть и более хлопотно.

1.    Создайте две копии вашего robots.txt: robots-old.txt и robots-new.txt. Отредактируйте их так, как нужно для нового и старого домена соответственно.
2.    В .htaccess добавьте такой код:
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !example.com
RewriteRule robots.txt robots-old.txt [L]
RewriteRule robots.txt robots-new.txt

Опять же, не забудьте заменить example.com на ваш новый домен.

После окончания первого этапа указанные строки из .htaccess уберите и сами файлы robots-new.txt и robots-old.txt – тоже.

P. S. Описанная выше методика является компиляцией многих опубликованных в сети советов, снабженной конкретными техническими решениями.

Alek$, блог http://nevkontakte.org.ru — блог Антисоциального программиста

————————————

Как переносить? (кусочек статьи)

Автор: Дорохин Сергей

В настоящий момент нет единого плана переноса сайта на новый домен для всех поисковых систем, «всем не угодишь». В частности у Яндекс и Google различные рекомендации по изменению домена и они даже частично противоречат друг другу. Противоречие в следующем: в процессе переезда Google требует настройки 301 редиректа, а Яндекс наоборот должен иметь одновременный доступ к обоим доменам с идентичным контентом до самого окончания процесса переноса (Платон Щукин подтверждает). Процесс получается долгий и спешки не приемлет.

Предлагается следующий план по переносу домена основанный на личном опыте автора.

  1. Регистрируем старый домен в сервисах для администраторов Яндекс и Google (Яндекс.Вебмастер, Google инструменты для вебмастеров);
  2. Регистрируем новый домен, паркуем его на существующий хостинг сайта или создаем зеркало сайта на другом хостинге с новым доменом;
  3. Начинаем постоянное отслеживание полной идентичности содержания сайтов на старом и новом домене (количество, содержание страниц, дизайн);
  4. Регистрируем новый домен в сервисах из пункта №1;
  5. Создаем директиву host в файле robots.txt для начала переноса в Яндекс’е. Процесс займет от 1 до 4 месяцев. Факторы определяющие продолжительность не выявлены, но явно замечено, что чем больше сайт (количество страниц и документов (файлов) — тем больше времени. Для уточнений обращаемся к статье «Переезд сайта на новый домен» инструкция от Яндекса.
  6. С помощью Яндекс.Вебмастер наблюдаем как количество страниц в индексе старого домена уменьшается, а нового — наоборот увеличивается. В конце процесса поступит сообщение от Яндекс, об успешной склейке доменов и переносе тИЦ. С Яндексом разобрались.
  7. В сервисе «Google инструменты для вебмастеров» настраиваем «Изменение адреса» с указанием нового домена, и выполняем все остальные рекомендации по переносу (главное — редирект 301, как это сделать в cpanel) . Отслеживаем процесс индексации нового сайта и параллельном уменьшении количества страниц участвующих в поиске Google для старого домена.
  8. Проводим мероприятия по исправлению старого домена на визитках, официальных документах, рекламных носителях и т.д.

По мнению автора такой план отличается от других тем, что он достаточно консервативен и растянут во времени. Однако в то же время он менее рискован, мероприятия происходят поэтапно, в случае если на каком то этапе возникнут проблемы, вопрос времени не критичен, т.к.  следующие этапы еще не начаты. Например, если при смене домена в Яндексе сильно упал поисковый трафик, Google продолжает на прежнем уровне направлять пользователей на старый домен. Такая ситуация кажется лучше чем потерять до 90% трафика от обоих поисковых систем одновременно.