Как правильно перенести сайт на новый домен. Выдержки из найденного в интернете. Перенос сайта — это к сожалению не тривиальная задача как может показаться сначала. Встречается ОЧЕНЬ много подводных камней. В любом случае не обойтись без определенных потерь. Посмотрим как можно минимизировать проблемы, которые могут возникнуть при переносе.
Содержание
Начнем с первоисточников
Переадресация 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 редиректа, а Яндекс наоборот должен иметь одновременный доступ к обоим доменам с идентичным контентом до самого окончания процесса переноса (Платон Щукин подтверждает). Процесс получается долгий и спешки не приемлет.
Предлагается следующий план по переносу домена основанный на личном опыте автора.
- Регистрируем старый домен в сервисах для администраторов Яндекс и Google (Яндекс.Вебмастер, Google инструменты для вебмастеров);
- Регистрируем новый домен, паркуем его на существующий хостинг сайта или создаем зеркало сайта на другом хостинге с новым доменом;
- Начинаем постоянное отслеживание полной идентичности содержания сайтов на старом и новом домене (количество, содержание страниц, дизайн);
- Регистрируем новый домен в сервисах из пункта №1;
- Создаем директиву host в файле robots.txt для начала переноса в Яндекс’е. Процесс займет от 1 до 4 месяцев. Факторы определяющие продолжительность не выявлены, но явно замечено, что чем больше сайт (количество страниц и документов (файлов) — тем больше времени. Для уточнений обращаемся к статье «Переезд сайта на новый домен» инструкция от Яндекса.
- С помощью Яндекс.Вебмастер наблюдаем как количество страниц в индексе старого домена уменьшается, а нового — наоборот увеличивается. В конце процесса поступит сообщение от Яндекс, об успешной склейке доменов и переносе тИЦ. С Яндексом разобрались.
- В сервисе «Google инструменты для вебмастеров» настраиваем «Изменение адреса» с указанием нового домена, и выполняем все остальные рекомендации по переносу (главное — редирект 301, как это сделать в cpanel) . Отслеживаем процесс индексации нового сайта и параллельном уменьшении количества страниц участвующих в поиске Google для старого домена.
- Проводим мероприятия по исправлению старого домена на визитках, официальных документах, рекламных носителях и т.д.
По мнению автора такой план отличается от других тем, что он достаточно консервативен и растянут во времени. Однако в то же время он менее рискован, мероприятия происходят поэтапно, в случае если на каком то этапе возникнут проблемы, вопрос времени не критичен, т.к. следующие этапы еще не начаты. Например, если при смене домена в Яндексе сильно упал поисковый трафик, Google продолжает на прежнем уровне направлять пользователей на старый домен. Такая ситуация кажется лучше чем потерять до 90% трафика от обоих поисковых систем одновременно.