Безболезненный перенос сайта на WordPress на новый домен
Перенос сайта, работающего на движке WordPress, на новый домен
В самую первую очередь необходимо сделать 2 вещи:
- скопировать все фтп-файлы со старого домена на новый;
- обязательно создать резервную копию базы данных сайта, чтобы в случае чего можно было сделать откат.
Дальнейшие действия могут выполняться одним из трех нижеследующих способов.
Первый способ
Это самый простой способ, требующий от вас минимум действий.
- Зайдите в админ-панель вашего сайта на страницу «Настройки — Общие».
- В полях «Адрес WordPress» и «Адрес сайта» укажите URL нового домена и подтвердите изменения, нажав на кнопку «Сохранить изменения».
- Готово. В тот же момент WordPress переадресует вас на страницу входа в админ-интерфейс, но уже на новом домене.
Второй способ
- Откройте сохраненный sql-дамп базы данных в текстовом или PHP редакторе.
- Замените все вхождения старого адреса сайта на новый адрес, например, http://domain.ru заменить на http://newdomain.ru, и сохраните изменения.
- Загрузите дамп в базу данных на сервере, предварительно удалив из нее все имеющиеся таблицы.
- Готово. Сайт на WordPress работает по новому адресу.
Третий способ
- Зайдите в phpMyAdmin и выберите базу данных.
- Нажмите на вкладку «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 on RewriteRule (.*) http://newdomain.ru/$1 [R=301,L]
На этом процедуру переноса WordPress-сайта на новый домен можно считать законченной.
Теперь несколько слов относительно сохранения показателей тИЦ и PR сайта.
Вышеуказанная директива кроме своего прямого назначения позволяет перенести на новый домен показатель Google PR, так что с ПиАром проблем возникнуть не должно.
Однако открытым для меня остается вопрос переноса показателя тИЦ Яндекса. Я прочитал по этому поводу достаточно информации, но так и не нашел однозначного решения. В основном рекомендуют на старом домене создать файл robots.txt с указанием параметра Host: newdomain.ru , на это не сработает из-за 301-го редиректа.
Я был бы признателен тому, кто разъяснит мне данный вопрос.
Добавлено 24.04.2010
Сам нашел ответ на свой вопрос. Чтобы при обращении к старому домену срабатывал 301-редирект, но за исключением файла robots.txt, в файле .htaccess старого домена нужно указать следующее:
RewriteEngine off Options +FollowSymLinks RewriteEngine on RewriteRule (.*) http://newdomain.ru/$1 [R=301,L]
А в файле robots. txt указать следующее:
User-Agent: * Disallow: Host: newdomain.ru
Как правильно перенести сайт на WordPress?
При переносе WordPress сайта с локального компьютера на сервер (или наоборот) сайт перестает работать. Аналогичная проблема возникает и при смене домена, по которому сайт доступен. Признаки неработоспособности бывают самые разные — не отображаются некоторые страницы, не отображаются картинки в библиотеке медиафайлов, не грузятся стили, не работают слайдеры, и т.д., и т.п. В чем причина такого поведения и как правильно перенести WordPress сайт или сменить его домен?
Отслеживать
67.9k 216 216 золотых знаков 77 77 серебряных знаков 219 219 бронзовых знаков
задан 7 янв 2018 в 8:44
KAGG Design KAGG Design
35.1k 4 4 золотых знака 24 24 серебряных знака 53 53 бронзовых знака
3 ответа 3
Сортировка: Сброс на вариант по умолчанию
Как правильно переносить сайт? (TL;DR)
Надо использовать программные средства, специально предназначенные для этого. Упомянутые ниже программы корректно работают с сериализованными данными, пересчитывая длину строк.
Самым простым и автоматизированным решением лично мне представляется плагин Duplicator, который снимает копию локального сайта, предоставляет для скачивания 2 файла: .zip и installer.php, которые надо перенести на новый сервер и там запустить installer.php. Все остальное плагин проделает автоматически. В большинстве случаев имеет смысл переносить только базу с помощью этого плагина, а файлы копировать по FTP.
Скрипт Database Search and Replace поможет корректно внести изменения в базу. Для этого пользователь должен, правда, понимать, что он делает, знать, например, какие пути на старом сайте и какие — на новом.
Плагин WP Migrate DB позволяет корректно подготовить базу для миграции. Для завершения процесса пользователь должен использовать phpMyAdmin для импорта базы на новом сервере.
Интерфейс командной строки для WordPress (WP-CLI) позволяет конвертировать базу одной командой. Например, для конвертации http://site.ru в https://site.org :
wp search-replace --url=http://site.ru http://site.ru https://site.org --recurse-objects --report-changed-only --precise --skip-columns=guid --skip-tables=wp_users --skip-plugins --skip-themes
С мультисайтом ситуация несколько сложнее. Плагины Duplicator и All-in-One WP Migration переносят их только в платной версии.
Мне неизвестны бесплатные плагины для переноса мультисайтов. Если хочется сделать перенос мультисайта бесплатно, то можно скопировать базу, а потом воспользоваться Database Search and Replace.
Причины проблем при переносе
В первую очередь проблемы возникают потому, что все ссылки в базе WordPress хранятся как абсолютные. Например, ссылка на иконку сайта выглядит примерно так:
http://mysite.com/wp-content/uploads/2017/01/cropped-test-favicon.png
Для правильной работы сайта на новом домене (например, https://newsite.org ) ссылка в базе должна измениться на
https://newsite.org/wp-content/uploads/2017/01/cropped-test-favicon.png
Обратите внимание на то, что даже при простом переводе сайта с http на https , все ссылки внутри базы надо менять!
За использованием абсолютных ссылок в WordPress лежат серьезные доводы. Почитайте этот ответ на английском StackOverflow, в котором даны объяснения. В том числе, приведено мнение одного из ведущих разработчиков WordPress. Единственная проблема, которая возникает при использовании абсолютных ссылок — перенос сайтов. Однако перенос сайта с относительными ссылками в общем случае ещё более проблематичен. В упомянутом ответе это тоже обсуждается.
Вторая причина проблем при переносе — сериализованные данные в базе. Все современные плагины (включая WooCommerce, слайдеры, различные визуальные редакторы типа Visual Composer), темы — хранят данные в базе в сериализованном виде. Это упакованные в строки массивы и объекты. Несколько примеров:
Информация о последнем отредактированном файле из темы twentyseventeen:
(39, 'recently_edited', 'a:3:', 'no'),
(5104, 'jpsq_sync-1494597052.351881-573008-5', 'a:6:i:2;i:1;i:3;d:1494597052.351856;i:4;b:0;i:5;a:9:[email protected]\";s:2:\"ip\";s:14:\"87.110.237.209\";s:7:\"is_cron\";b:0;s:11:\"is_wp_admin\";b:1;s:7:\"is_rest\";b:0;s:9:\"is_xmlrpc\";b:0;s:10:\"is_wp_rest\";b:0;s:7:\"is_ajax\";b:0;>>', 'no'),
Данные популярного плагина бэкапа сайтов BackWPUp
(5884, 'backwpup_jobs', 'a:1:s:12:\"destinations\";a:1:s:4:\"name\";s:15:\"Database backup\";s:14:\"mailaddresslog\";s:12:\"[email protected]\";s:20:\"mailaddresssenderlog\";s:28:\"BackWPup test [email protected]>\";s:13:\"mailerroronly\";b:1;s:13:\"archiveformat\";s:4:\".zip\";s:11:\"archivename\";s:24:\"%Y-%m-%d_%H-%i-%s_%hash%\";s:11:\"fileexclude\";s:51:\".DS_Store,.git,.svn,.tmp,/node_modules/,desktop.ini\";s:10:\"dirinclude\";s:0:\"\";s:19:\"backupexcludethumbs\";b:0;s:18:\"backupspecialfiles\";b:1;s:10:\"backuproot\";b:0;s:17:\"backupabsfolderup\";b:0;s:13:\"backupcontent\";b:0;s:13:\"backupplugins\";b:0;s:12:\"backupthemes\";b:0;s:13:\"backupuploads\";b:0;s:21:\"backuprootexcludedirs\";a:0:<>s:24:\"backupcontentexcludedirs\";a:1:s:24:\"backuppluginsexcludedirs\";a:1:s:23:\"backupthemesexcludedirs\";a:0:<>s:24:\"backupuploadsexcludedirs\";a:0:<>s:9:\"backupdir\";s:32:\"uploads/backwpup-a34fdc-backups/\";s:10:\"maxbackups\";i:7;s:18:\"backupsyncnodelete\";b:0;s:7:\"lastrun\";d:1510222228;s:7:\"logfile\";s:98:\"/var/www/test/wp-content/uploads/backwpup-a34fdc-logs/backwpup_log_a34fdc_2017-11-09_10-10-28.html\";s:21:\"lastbackupdownloadurl\";s:129:\"http://test.kagg.eu/wp-admin/admin.php?page=backwpupbackups&action=downloadfolder&file=2017-11-09_10-10-28_SKRU7XDQ01.zip&jobid=1\";s:11:\"lastruntime\";d:1;>>', 'no'),
во всех примерах можно найти путь к папке сайта на сервере: /var/www/test/ .
Вот пример сохраненных настроек из очень популярного SEO-плагина Yoast
(291, 2, 'wp_yoast_notifications', 'a:3:We have detected that you have not finished this wizard yet, so we recommend you to start the configuration wizard to configure Yoast SEO.\";s:7:\"options\";a:8:s:13:\"dismissal_key\";N;s:12:\"capabilities\";s:14:\"manage_options\";s:16:\"capability_check\";s:3:\"all\";>>i:1;a:2:give us a 5 stars rating on WordPress.org!\n\nIf you are experiencing issues, please file a bug report and we\'ll do our best to help you out.\n\nBy the way, did you know we also have a Premium plugin? It offers advanced features, like a redirect manager and support for multiple keywords. It also comes with 24/7 personal support.\n\nPlease don\'t show me this notification anymore\";s:7:\"options\";a:8:s:13:\"dismissal_key\";N;s:12:\"capabilities\";s:14:\"manage_options\";s:16:\"capability_check\";s:3:\"all\";>>i:2;a:2:connect with Google Search Console here.\";s:7:\"options\";a:8:s:13:\"dismissal_key\";N;s:12:\"capabilities\";s:14:\"manage_options\";s:16:\"capability_check\";s:3:\"all\";>>>'),
Здесь мы видим в сериализованных данных строку с упоминанием домена: href=\»http://test.kagg.eu/wp-admin/?page=wpseo_configurator\» . Она мало того, что сериализована, да ещё и экранирована ( \» ).
Третья причина — наличие в базе путей к файлам. Они могут быть не только от корня WordPress, но и от домашнего каталога пользователя хостинг-аккаунта или даже от корня веб-сервера (некоторые плагины так делают). Пути могут быть представлены как обычными строками, так и сериализованными данными (первый пример выше). При переносе на другой хостинг их тоже надо менять.
Что произойдет, если просто перекинуть базу как есть на новый сервер? Очевидно, перестанут работать вещи, связанные с путями к файлам и ссылками, содержащими предыдущий домен.
Что надо делать? Очевидно, менять пути к файлам на новые и имя домена в базе. Вопрос, как. Совершенно непригодны три плохих совета, которые часто можно встретить:
- Заменить в базе в таблице wp_options записи c option_name = siteurl и home на новое имя домена. Работает только на самых примитивных сайтах.
- Сделать дамп базы в файл .sql, и провести текстовые замены путей и домена, затем залить базу на новый сервер. Это прямой путь к разрушению базы. Сериализованные данные при этом будут безнадежно испорчены.
- Послать несколько SQL-запросов, которые произведут замену домена. То же самое, что и выше — это прямой путь к разрушению базы. Сериализованные данные будут безнадежно испорчены.
Рассмотрим первый пример выше с сериализованными данными. После текстовой замены /var/www/test/ на, скажем, /home/i/account-name/site-name.org/public_html (как на одном популярном хостинге), из строки
s:46:\"/var/www/test/wp-content/themes/test/style.css\"
s:46:\"/home/i/account-name/site-name.org/public_html/wp-content/themes/test/style.css\"
Только ее длина уже ни разу не 46 символов, и WordPress не сможет прочитать эти сериализованные данные из базы.
Таким образом, все три «популярных» совета надо признать вредными.
Как перенести WordPress на другой домен
Если ваш проект попал под фильтр поисковых систем, вы потеряли доступ к старому доменному имени или просто решили создать новое, то вам будет полезно почитать как перенести WordPress на другой домен. Нельзя сказать, что эта задача в веб-разработке встречается достаточно часто, но иногда все же подобные ситуации возникают. Процесс переезда пусть и не самый сложный, но здесь есть несколько важных нюансов.
Кроме того, в отличии от переноса сайта между разными хостингами, где у вас всегда под рукой имеется исходный проект, смена домена в WordPress подобной «роскоши» не допускает. Как правило, вам нужно поменять адрес сайта в той же учетной записи с той же базой данных. Это и является основной сложностью.
Алгоритм можно разделить на несколько глобальных этапов (для удобства дополнительно добавлю нумерацию всех шагов):
- Подготовительный этап.
- Непосредственно перенос WordPress на другой домен.
- Проверка и доработка.
Подготовка к переносу
1. Первое, что нужно сделать — создать резервную копию базы данных. Рекомендую так поступать перед выполнением любых задач в БД. Сохранять файлы сайта с FTP на локальный диск, в принципе, нет смысла, т.к. меняется только информация в базе (если это не миграция с между хостингами).
2. В некоторых источниках встречаются рекомендации по правке файла robots.txt перед тем как перенести сайт на WordPress на другой домен. Можно создать новый robots.txt, где указать:
User-agent: * Disallow: /
Эти строки запретят индексацию проекта поисковиками на время работы. Если файл robots.txt у вас уже был, то предварительно сохраните его к себе на компьютер дабы потом восстановить.
Теоретически с точки зрения SEO в этих действиях есть логика. Вы предотвратите случайное попадание в выдачу лишних материалов в процессе смены вордпресс домена. Однако, если честно, не думаю, что там за полчаса случится что-то страшное, к тому же после обновления robots.txt мусор сам пропадет из выдачи. Выполняйте данный шаг, если хотите сделать все максимально четко (я, если честно, последние несколько раз его пропускал).
3. При использовании кэширования на сайте, есть смысл удалить с FTP устаревшие файлы кэша. Также на время переезда можно отключить соответствующий модуль в админке, как при ручном обновлении системы. Это, в принципе, не критично, просто в процессе проверки будут подгружаться прошлые версии страниц веб-проекта и дезориентировать вас.
Изменяем домен в WordPress на новый
4. На четвертом этапе, во-первых, отредактируем наш файл wp-config.php. Скачиваете его с FTP на компьютер, открываете в редакторе Notepad++ (кодировка utf-8 без BOM) или через Sublime Text. Добавляем туда следующие строки:
define('WP_SITEURL', 'http://newdomain.com'); define('WP_HOME', 'http://newdomain.com');
define(‘WP_SITEURL’, ‘http://newdomain.com’); define(‘WP_HOME’, ‘http://newdomain.com’);
Внимание! Здесь вместо newdomain.com подставляете значение, на которое вы хотите сменить домен в WordPress. После этого сможете заходить в админку по новому пути: http://newdomain.com/wp-admin/.
5. Затем нужно заменить все вхождения прошлого адреса сайта на новый в БД. В системе вордпресс для этих целей предусмотрено несколько модулей:
- Better Search Replace (использую сейчас, он позволяет заменять данные с Guid в отличии от следующего)
- Search & Replace (с символом «&» в названии, а «and» в URL’е).
- All-in-One WP Migration.
- WP Migrate DB.
- Velvet Blues Update URLs.
- Плюс PHP скрипт от InterconnectIt.
Первые три плагина рассмотрел в статье о переносе базы в WordPress — есть из чего выбрать.
Также ранее был обзор Velvet Blues Update URLs. Данное решение нашел как альтернативу Search & Replace пока тот был недоступен. Вся работа, в принципе, сводится к запуску скрипта на странице настроек.
Однако как только Search & Replace снова начать работать, я вернулся к данном варианту. Здесь больше разных опций, например, смена префикса таблиц. Более того, кроме раздела под смену домена (Replace Domain URL) есть вкладка с обычной заменой текстов в базе.

Не забывайте перед запуском обязательно делать бэкап БД.
Важно! По сути, тут есть 2 метода смены домена – через запуск соответствующей функции, например, в том же Velvet Blues Update URLs или вкладка Replace Domain URL в плагине Search & Replace либо обычная замена информация в базе данных.
В первом случае скрипты не имеют никаких тестовых запусков, выбора таблиц и доп.параметров – вы просто указываете старый и новый домены. Второй подход чуть более гибкий, т.к. вы можете просмотреть где еще в БД используется старое доменное имя, какие таблицы есть смысл повторно проверить через PhpMyAdmin и т.п.
Для нового или простого проекта я бы использовал простой скрипт, для крупных — надо тщательно изначально все проанализировать в базе данных. Бекапы must have!
Что касается инструмента PhpMyAdmin. Я использую его для проверки работы упомянутых выше решений (и иногда вначале), дабы проконтролировать процесс переноса WordPress на другой домен:
- Заходим в PhpMyAdmin, где выбираем вашу БД и кликаем по меню «Поиск» (Search).
- На открывшемся странице в поле «Слова поиска» вводите старый адрес веб-проекта и отмечаете все таблицы, зажав левую кнопку мышки.
- Кликаем Go.

В результате получите список таблиц, где встречается прошлое доменное имя. После этого можно еще раз запустить Search & Replace и попытаться поменять информацию там, выбирая конкретные таблицы.
Внимание! Править записи в PhpMyAdmin или через SQL запросы не рекомендуется, т.к. в системе могут быть так называемые сериализованные данные.
s:9:"old words" нужно менять на s:7:"newtext"
s:9:»old words» нужно менять на s:7:»newtext»
При изменения напрямую этот нюанс учитываться не будет, что в итоге приведет к ошибкам в настройках виджетов, шаблонов и т.п. Поэтому рекомендуется все же использовать для решения задачи специальные плагины. Кстати, некоторые вхождения старого URL могут оставаться в БД (записи кэша или настройки неактивных/удаленных модулей), они вообще никак не влияют на отображение сайта.
Проверка и доработка
Фактически после выполнения пункта номер 5 мы уже перенесли WordPress на другой домен. Однако после этого есть еще парочка важных вещей, которые необходимо реализовать.
6. Первым делом проверяем работоспособность — зайдите в категории, посты, страницы, архивы тегов. На какие моменты нужно обратить особенное внимание:
- Изменение настроек RSS в FeedBurner, если используете RSS ленту.
- Карта сайта. Возможно, в моем случае там был кэш браузера, но почему-то ссылки сразу не изменились. Также следует проверить и XML.
- Каптча — не знаю как в остальных решениях, но для гугловской reCaptcha придется заново перегенерировать ключи.
- Собственно, конфигурацию любого модуля/скрипта, который привязывается в URL проекта, вам нужно будет обновить.
7. SEO настройки. Разумеется, вопрос переезда веб-сайта с точки зрения SEO имеет множество нюансов. Но если говорить конкретно про смену домена в WordPress на новый, то здесь выделю два основных момента:
- Во-первых, нужно вернуть исходный robots.txt, если вы временно закрывались от индексации. Более того, не забудьте подправить в нем директивы Host и Sitemap.
- Еще одна фишка — создание перенаправление со старого адреса. Однако, насколько я понимаю, это реально сделать, когда у вас имеется физически два разных веб-проекта, то есть при переходе между хостингами или с директории /blog/ на основной. В таком случае в прошлый htaccess прописываете соответствующий 301 редирект.
Итого
Не смотря на такое достаточно объемное руководство осуществить для сайта перенос в Вордпресс на другой домен не так уж и сложно. Если вы будете пошагово выполнять данную инструкцию, все у вас получится. Основные моменты здесь: конечно, бэкап (!), потом правка wp-config.php, а также замена вхождений прошлого URL на новый. Последнюю задачу можно решить обычными плагинами и без PhpMyAdmin — как я говорил выше, нет смысла заменять абсолютно все 100% упоминания старого адреса, главное чтобы после завершения алгоритма все ссылки, посты и картинки корректно отображались. Финальная проверка и доработка также важны.
Если остались какие-то вопросы по процедуре переноса сайтов с WordPress на новый домен, пишите в комментах. Дополнениям и советам также буду рад.
Понравился пост? Подпишись на обновления блога по
RSS,
Email или
twitter!

Оцените статью:
(голосов — 13, средний балл: 5,62 из 7)
Категории: Возможности;
Теги: SEO, wordpress руководство, база данных, новичкам, перенос сайта, полезное для блога, полезные плагины.
Похожие статьи:
- Перенос базы данных в WordPress с плагинами и без
- Как удалить записи WordPress, очистить базу данных и настройки сайта (+подборка модулей)
- Как установить Google Analytics на WordPress сайт — вставка кода вручную + плагин GADWP
- Дайджест лучших статей WordPress Inside в 2017 (итоги года)
- Лучшие статьи блога WordPress Inside за 2019 год
