
Иногда возникает потребность перенести сайт на новый домен. Причин для этого может быть масса, и почти у каждого своя. Но, как это сделать правильно, не теряя позиций, посетителей, подписчиков и показателей сайта. Об этом мы и расскажем в этой статье. Процесс переноса состоит из трех этапов:
- перенос содержимого сайта;
- установка 301 редиректа (для всех url);
- изменение robots.txt.
Процесс переноса содержимого сайта мы решили показать на примере самой распространенной бесплатной CMS, а именно WordPress.
1. Перенос содержимого сайта
Первым делом необходимо сделать бэкап сайта, например из командной строки SSH:
cd full_path_to_WP // Переходим в папку с установленным wordpress
tar -pczf backup.tar.gz * // Архивируем все файлы в текущей директории
Скопировать архив с бэкапом в папку нового домена и распаковать из SSH можно командой:
tar -xvfz backup.tar.gz
Далее необходимо перенести базу данных (если хостинг не меняется, данные правки не обязательны):
- Через утилиту phpmyadmin необходимо экспортировать таблицу WordPress в формате SQL.
- Импортировать dump.sql в новую базу данных.
После переноса всех файлов и базы данных необходимо отредактировать файл wp-config.php, находящийся в корне сайта, заменив в нем следующие строки:
define('DB_NAME', 'you_bd_name'); // имя базы данных
define('DB_USER', 'you_db_user'); // имя пользователя базы данных
define('DB_PASSWORD', 'you_db_password'); // пароль к базе дынных
define('DB_HOST', 'you_db_host'); // host базы данных, чаще всего localhost
После этого сайт заработает на новом домене, но некоторые ссылки будут отображаться некорректно, чтобы это исправить необходимо выполнить несколько команд в базе данных. Для этого необходимо зайти в phpmyadmin, выбрать нужную вам базу данных, нажать SQL и выполнить код (заменив old.name и new.name на нужные вам значения):
UPDATE wp_options SET option_value = replace(option_value, 'http://old.name', 'http://new.name') WHERE option_name = 'home' OR option_name = 'siteurl';
UPDATE wp_posts SET guid = replace(guid, 'http://old.name', 'http://new.name');
UPDATE wp_posts SET post_content = replace(post_content, 'http://old.name', 'http://new.name');
Следует обратить внимание на то, что префикс таблиц wp_ хоть и является стандартным, но может отличаться для разных инсталяций WordPress, в таком случае, в запросе необходимо заменить и его. После этого в 99% случаев сайт будет работать корректно. Если же в шаблоне встречаются ссылки содержащие старое доменное имя, следует поправить их вручную, либо запустить небольшой bash скрипт:
#!/bin/bash
for i in `grep -rl 'old.name' .`; do sed -i 's/old.name/new.name/g' $i; done
Предварительно заменив old.name и new.name, сохраните данный код в любом текстовом редакторе (в кодировке utf-8) под именем script.sh. Скопируйте его в папку с WordPress и выполните в SSH следующие команды:
cd full_path_to_WP // Переходим в папку с установленным wordpress
bash script.sh //Запуск скрипта
После выполнения скрипта все ссылки на новом сайте будут работать корректно.
2. Установка 301 редиректа
На старом сайте в файле .htaccess нужно установить 301 редирект на все файлы, кроме robots.txt (new.name замените на ваш новый домен):
RewriteEngine off
Options +FollowSymLinks
RewriteEngine on
RewriteRule (.*) http://new.name/$1 [R=301,L]
3. Изменение robots.txt
В файле robots.txt в качестве хоста необходимо указать ваш новый домен:
User-Agent: *
Disallow:
Host: new.name
На этом работы по переносу сайта на новый домен закончены. При правильном выполнении всех трёх пунктов:
- новому домену передадутся ТИЦ и PR (правда, придется подождать пересчета этих параметров);
- вес ссылок и другие seo параметры так же будут переданы через 301 редирект;
- поисковые позиции старого сайта будут восстановлены Яндексом.
Как показывает наша практика при правильном переносе сайта на новый домен весь поисковой трафик удается сохранить на 95-100%, а в некоторых случаях (если старый домен был под санкциями) и приумножить. Если возникли какие-нибудь вопросы, просим задавать их в комментариях.