Web-разработка

Перенос сайта на другой домен и хостинг

, , , , ,
5 сентября 2014, 10:39

Эта тема в интернете изписана вдоль и поперек. Информации просто море. Я постараюсь объединить весь процесс переноса сайта в один материал. Что бы удобно было использовать как заметку:) Настройка 301 ошибки и собственно самого редиректа подойдет для любого сайта. А в качестве CMS, в примере я буду использовать WordPress.

Перенос сайта на другой домен и хостинг

Подробности ниже.

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

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

Условно можно разделить весь процесс переноса на несколько частей:

  • Перенос самого сайта (движок, БД)
  • Создание правильного редиректа (301-я ошибка)

Начнем с процесса переноса файлов самого сайта, а потом техническая часть правильного редиректа. Процесс переноса сайта на другой домен очень похож на перенос сайта с локальной машины на веб-сервер. Действия практически идентичны.

Перенос файлов и директорий сайта на другой хостинг

Так как я уже не раз писал о популярной CMS WordPress, возьмем ее за пример.
Для этого нам понадобится следующее:

  • FileZilla для переноса файлов и директорий
  • Sypex Dumper для создания дампа базы данных

С помощью программы FileZilla Вам нужно перенести все файлы со старого домена на новый. Создать базу данных для сайта на новом хостинге. (Как это сделать для WordPress можно почитать здесь.)

Для того что бы перенести базу данных можно воспользоваться утилитой Sypex Dumper, либо утилитой phpMyAdmin. Импортируем базу данных на новый хостинг. Теперь остается сделать дополнительные настройки самого движка Wrodpress.

Сначала нужно подключить новую БД к WordPress.
В файле wp-config.php, который расположен в корневой директории нового сайта нужно изменить в соответствии с вашими параметрами следующие строки:

/** Имя базы данных для WordPress */
define('DB_NAME', 'newsitebdname');
/** Имя пользователя MySQL */
define('DB_USER', 'newsiteusername');
/** Пароль пользователя MySQL */
define('DB_PASSWORD', 'password');
/** Адрес сервера MySQL */
define('DB_HOST', 'localhost');
/** Кодировка базы данных при создании таблиц. */
define('DB_CHARSET', 'utf8');
/** Схема сопоставления. Не меняйте, если не уверены. */
define('DB_COLLATE', '');

CMS WordPress хранит ссылки на сайт в нескольких местах БД. Это требуется для работы некоторых встроенных функций и корректной работы с ссылками. Их нужно заменить на новые.

Это можно сделать изменив ссылку в настройках движка. Для этого нужно зайти на старый сайт в Параметры->Общие, и там исправить два поля Адрес WordPress (URL) и Адрес сайта (URL) на новый домен.
Я бы не рекомендовал этот способ, так как все равно могут возникнуть некоторые трудности с работой ссылок. И не всегда даже у простого пользователя получается понять что нужно сделать. Наиболее предпочтительнее два следующих варианта.

1. При создании дампа БД например через phpMyAdmin у вас на выходе получится текстовый файл. Откройте его в текстовом или PHP-редакторе, и выберите пункт меню «Поиск и замена» или «Замена всех вхождений«.
2. Второй вариант. Здесь нужно будет выполнить три MySQL запроса, которые поправят все ссылки, включая те которые находятся в тексте ваших постов. В phpMyAdmin есть вкладка SQL, в которой и можно выполнить следующие три запроса:

#Заменить те самые поля, о которых я говорил выше: Адрес WordPress (URL) и Адрес сайта (URL)
UPDATE wp_options SET option_value = replace(option_value, 'http://domain.com','http://newdomain.com') WHERE option_name = 'home' OR option_name = 'siteurl';
 
#Заменить все адреса страниц на новые
UPDATE wp_posts SET guid = replace(guid, 'http://domain.com','http://newdomain.com'); 
 
#Заменить все ссылки, которые находятся в тексте постов на новые
UPDATE wp_posts SET post_content = replace(post_content, 'http://domain.com','http://newdomain.com');

Будьте внимательны, если у вас все ссылки начинаются с www (http://www.domain.com), то соответственно в запросах вам нужно так и указывать. Если Вы точно не знаете какие ссылки у вас, то просто каждый из запросов введите дважды: один с www, другой без.

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

Если вы использовали мой материал Обязательные плагины для WordPress и установили плагин Google XML Sitemaps. То Вам нужно будет заново построить карту сайта для изменения ссылок. Соответствующая кнопка(ссылка) есть в настройках плагина.
Не забудьте удалить утилиту для создания дампа БД и сам дамп.
На этом перенос сайта закончен. Осталось настроить все так, что бы все показатели вашего сайта остались такие же.

301 редирект

При смене домена сайта, его позиции в поисковой выдаче и количество проиндексированных страниц может уменьшится. Но для того что бы этот эффект минимизировать, нужно сделать правильный редирект, и указать основное зеркало сайта.
Кто не знает что такое 301 Moved Permanently, небольшая справка:

Если по запросу какой либо страницы выдается ошибка 301, то это означает что сайт навсегда переехал на новый URI, который указывается в поле Location HTTP заголовка. В следствии чего пользователи и поисковики при заходе на старый URL, будут переходить на новый сайт.

Ошибка 301 наверное один из самых лучших способов для переезда на новый домен. Ведь при этом по сути произойдет склейка старого и нового адресов. И все свойства будут переданы от старого новому, в следствии чего у вас не упадет посещаемость и все показатели типа тИЦ и PageRank(PR) и вес страниц будут переданы новому домену.

Итак для того, что бы редирект заработал, на старом домене в корневой директории нужно создать файл .htaccess, со следующим содержанием:

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} robots.txt$ [NC]
RewriteRule ^([^/]+) $1 [L]
 
RewriteCond %{HTTP_HOST} ^domain\.com
RewriteRule ^(.*)$ http://newdomain.com/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^www.domain\.com
RewriteRule ^(.*)$ http://www.newdomain.com/$1 [R=301,L]

После этого все пользователи и поисковые роботы будут перенаправляться с домена domain.com на newdomain.com и www.newdomain.com соответственно. А файл robots.txt будет доступен поисковикам в полном объеме.
Создайте и разместите на старом домене файл robots.txt, со следующим содержанием:

User-agent: Yandex
Host: newdomain.com
 
User-agent: *
Disallow:
Sitemap: http://newdomain.com/sitemap.xml

Не забудьте изменить файл robots.txt и на новом домене. На этом переезд сайта на новый домен закончен. Осталось подождать некоторое время, и поисковики сами укажут новый домен в настройках старого. Для уверенности Вы можете вручную во всех сервисах в поле «Главное/основное зеркало» указать адрес нового домена. Обычно это делается в панели вебмастера поисковиков google и яндекс, и все различных каталогах.
Но на примере Яндексу достаточно правильного файла robots.txt для склейки зеркал. А нем я говорил выше. Главное правило здесь: не запутаться и указать в директиве Host и других местах новый адрес сайта. Что бы поисковый робот ничего не напутал и указал в качестве основного/главного зеркала то что вы хотите.

Если Вы используете счетчик посещений сайта от сервиса liveinternet.ru, Вам нужно будет зайти в настройки описания, и там в поле «Синонимы» указать новый адрес вашего сайта. Это и есть те самые «зеркала» сайта.

Будьте готовы, к тому что старый сайт исчезнет из поисковой выдачи.

А вот несколько полезных ссылок, в том числе источников информации:

  • link — рекомендации Google по переезду на новый домен
  • link— а здесь рекомендации Яндекс
  • link — здесь варианты для разных языков и серверов

Материал написан по мотивам этого поста.
Удачных Вам переездов;) И будьте внимательны!