Перенос WordPress на сервер

При переносе с localhost’а на реальный сервер нельзя забывать про адрес сайта. Для примера будем считать, что сайт переносится с домена mysite.local на домен mysite.ru.

В сохранённом дампе базы данных WordPress ищем все вхождения mysite.local и заменяем на mysite.ru. Можно это сделать в любом нормальном текстовом редакторе (например, Notepad++). После замены аккуратно сохраняем БД, не забывая о кодировке (в случае с более или менее современными версиями WordPress нужна кодировка UTF-8 без BOM).

WordPress. Перенос сайта с одного домена на другойПри простом переносе файлов wordpress из одной директории в другую, сайт «ломается» — нарушается вёрстка, пропадают картинки. Данная инструкция поможет вам, если:

* вам необходимо произвести перенос с одного домена на другой или с под домена на основной домен;
* вам необходимо произвести перенос с подкаталога ../domain.ru/wordpress в основной каталог ../domain.ru/.

Перенос с одного домена на другой, в том числе, с под домена sub.domain.ru на основной домен domain.ru.
Скопируйте файлы сайта в корневую папку нового сайта: Как узнать корневую папку сайта;
при необходимости создайте новую базу данных (БД) и импортируйте в неё дамп БД прошлого сайта: Как создать базу данных, Импорт базы данных MySQL;
После импорта необходимо скорректировать адрес сайта в базе данных. Для этого откройте базу данных нового сайта в phpmyadmin. Выберите необходимую базу и перейдите во вкладку SQL. По очереди выполните следующие SQL-запросы:

	* UPDATE wp_options SET option_value = REPLACE(option_value, 'http://olddomain.ru', 'http://newdomain.ru') WHERE option_name = 'home' OR option_name = 'siteurl';
	* UPDATE wp_posts SET guid = REPLACE(guid, 'http://olddomain.ru','http://newdomain.ru');
	* UPDATE wp_posts SET post_content = REPLACE(post_content, 'http://olddomain.ru', 'http://newdomain.ru');

Где olddomain.ru — прежнее название сайта, а newdomain.ru — новое название сайта.
Важно: если у вас кириллический домен, название домена в SQL-запросах необходимо вводить в формате Punycode. Для перевода кириллического домена в формат Punycode, воспользуйтесь конвертером. Например, вам необходимо перенести сайт на кириллический домен новый домен.ru. Название этого домена в формате Punycode выглядит так: xn--b1aedoqcfcd1k.ru. В таком случае, вам необходимо вводить SQL-запрос (на примере 2 запроса): UPDATE wp_posts SET guid = REPLACE(guid, ‘http://olddomain.ru’,’http://xn--b1aedoqcfcd1k.ru’).
Появляется ошибка
Если вы наблюдаете подобную ошибку: 1146 — Table ‘u1234567_hid5.wp_options’ doesn’t exist, проверьте, существует ли такая таблица wp_options. Возможно, префикс таблицы имеет другое вид, отличный от «wp», т.е. таблица может называться xxx_options, где xxx — это любой набор букв и цифр. Если это так, то вам необходимо во всех трех вышеприведенных запросах подправить названия таблиц, заменив в них префикс «wp» на тот, который используется в ваших таблицах.
очистите папку wp-content/cache. Перед проверкой корректности отображения сайта очистите кэш браузера.
Перенос с подкаталога домена на основной доменНапример, если перенос производится с подкаталога ../domain.ru/wordpress в основной каталог ../domain.ru/.
Скопируйте файлы сайта в корневую папку нового сайта: Как узнать корневую папку сайта;
при необходимости создайте новую базу данных (БД) и импортируйте в неё дамп БД прошлого сайта: Как создать базу данных, Импорт базы данных MySQL;
Проверьте файл .htaccess. Строки «RewriteBase» и «RewriteRule» должны выглядеть так:

RewriteBase /
RewriteRule . /index.php [L]

После импорта необходимо скорректировать адрес сайта в базе данных. Для этого откройте базу данных нового сайта в Phpmyadmin: Как войти в phpMyAdmin Выберите необходимую базу и перейдите во вкладку SQL. По очереди выполните следующие SQL-запросы:

	* UPDATE wp_options SET option_value = REPLACE(option_value, 'http://domain.ru/wordpress', 'http://domain.ru') WHERE option_name = 'home' OR option_name = 'siteurl';


	* UPDATE wp_posts SET guid = REPLACE(guid, 'http://domain.ru/wordpress','http://domain.ru');


	* UPDATE wp_posts SET post_content = REPLACE(post_content, 'http://domain.ru/wordpress', 'http://domain.ru');

Где domain.ru/wordpress — прежний адрес сайта, а domain.ru — новый адрес сайта;
Очистите папку wp-content/cache. Перед проверкой корректности отображения сайта очистите кэш браузера.

***********************************************************************
Безболезненный перенос сайта на WordPress на новый домен

Иногда может возникнуть ситуация, когда необходимо сайт, работающий на движке WordPress, перенести на новый домен. Т.е. суть данного действа заключается только в изменении имени домена, все содержимое же, равно как и структура ссылок, остается прежним. При этом не маловажный момент — сохранение показателей тИЦ и PR.
К данному вопросу необходимо подходить с полным пониманием дела, ибо обратное может быть чревато неприятными последствиями.
Процесс переноса можно условно разделить на 2 части:

1. Перенос сайта, работающего на движке WordPress, на новый домен.
2. Создание 301 редиректа со старого домена на новый.

Перенос сайта, работающего на движке WordPress, на новый доменВ самую первую очередь необходимо сделать 2 вещи:

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

Дальнейшие действия могут выполняться одним из трех нижеследующих способов.
Первый способ это самый простой способ, требующий от вас минимум действий.

1. Зайдите в админ-панель вашего сайта на страницу «Настройки — Общие».
2. В полях «Адрес WordPress» и «Адрес сайта» укажите URL нового домена и подтвердите изменения, нажав на кнопку «Сохранить изменения».
3. Готово. В тот же момент WordPress переадресует вас на страницу входа в админ-интерфейс, но уже на новом домене.

Второй способ
1. Откройте сохраненный sql-дамп базы данных в текстовом или PHP редакторе.
2. Замените все вхождения старого адреса сайта на новый адрес, например,http://domain.ru заменить на http://newdomain.ru, и сохраните изменения.
3. Загрузите дамп в базу данных на сервере, предварительно удалив из нее все имеющиеся таблицы.
4. Готово. Сайт на WordPress работает по новому адресу.

Третий способ
1. Зайдите в phpMyAdmin и выберите базу данных.
2. Нажмите на вкладку «SQL» и поочередно выполните следующие 3 запроса, заменивhttp://domain.ru и http://newdomain.ru соответственно на старый и новый адреса сайта (обратите внимание, что в конце адреса не должно быть слэша):

		* UPDATE wp_options SET option_value = replace(option_value, 'http://domain.ru', 'http://newdomain.ru') WHERE option_name = 'home' OR option_name = 'siteurl';

		* UPDATE wp_posts SET guid = replace(guid, 'http://domain.ru','http://newdomain.ru');

		* UPDATE wp_posts SET post_content = replace(post_content, 'http://domain.ru', 'http://newdomain.ru');

Теперь сайт будет открываться по новому адресу.

Создание 301 редиректа со старого домена на новый остается добиться того, чтобы при обращении к любой странице сайта по старому адресу посетитель автоматически перенаправлялся на ту же самую страницу в новом домене.
Для этого необходимо заменить содержимое файла .htaccess, находящегося в корне старого домена, на следующее (вместо newdomain.ru указывается новый домен):

Options +FollowSymLinks
RewriteEngine onRewriteRule (.*) http://newdomain.ru/$1 [R=301,L]

На этом процедуру переноса WordPress-сайта на новый домен можно считать законченной.
Теперь несколько слов относительно сохранения показателей тИЦ и PR сайта.
Вышеуказанная директива кроме своего прямого назначения позволяет перенести на новый домен показатель Google PR, так что с PR проблем возникнуть не должно.
Однако открытым остается вопрос переноса показателя тИЦ Яндекса. В основном рекомендуют на старом домене создать файл robots.txt с указанием параметра Host: newdomain.ru, на это не сработает из-за 301-го редиректа.
Чтобы при обращении к старому домену срабатывал 301-редирект, но за исключением файла robots.txt, в файле .htaccess старого домена нужно указать следующее:

RewriteEngine offOptions +FollowSymLinks
RewriteEngine onRewriteRule (.*) http://newdomain.ru/$1 [R=301,L]

А в файле robots.txt указать следующее:
User-Agent: *
Disallow:
Host: newdomain.ru