Нашел абсолютно проверенный и 100%-рабочий способ переезда сайтов под Вордпресс на другой домен или хостинг. Все можно сделать быстро, а главное - правильно!
Обычно я переношу сайты WordPress CMS на другой хостинг довольно часто - по 20 раз в месяц (такая работа!). И мне всегда казалось, что я все делаю правильно: ну перенес файлы, перенес базу данных, поменял имя сайта в файлах и базе – и вуаля!
Но не так все просто. Как-то после очередного переезда у меня напрочь перестали работать виджеты - сайт отображался криво.
Я погуглил и нашёл причину – недостаточно просто перенести сайт, нужно еще и правильно поменять его имя с учетом синтаксиса современных баз данных. И я решил поделиться своим способом переноса Вордпресса на новый домен и хостинг и со своими читателями.
Содержание
Плагины после переноса WordPress не заработали
Раньше я действовал так: ставил плагин Xcloner, копировал с его помощью сайт в виде архива (там внутри была и база), затем переносил и устанавливал на новый хостинг или домен.
Но даже с помощью этого, казалось бы проверенного способа, несколько моих последних сайтов некорректно перенеслись, когда я их устанавливал клиентам на хостинг.
В чем же дело?
Я подумал сразу, что видимо дело в плагине Xcloner.
Перепробовал еще штук 5 разных плагинов, вроде бесплатного Duplicator и платного BackUp Buddy, и еще уже не помню всяких разных до кучи.
Везде была одна и та же проблема - сайт после переноса выглядел криво. Как бы не все элементы отображались, в первую очередь, виджеты.
Я плюнул на плагины и подумал: перенесу по старинке руками.
Переношу WordPress вручную
Как я уже писал в других статьях, современный сайт состоит обычно из двух «частей»: программные файлы и база данных со статьями, настройками и прочей информацией.
Поэтому в процессе переноса WordPress на другой домен и хостинг в ручном режиме обычно состоит из этих же двух этапов:
- Переносим файлы
- Переносим базу данных
Вручную это делается так.
Перенос файлов
Понятно, что перенести файлы можно несколькими способами. Раньше я это делал через FTP-протокол (читаем как работать по FTP тут). В этом случае я сначала копировал файлы на свой компьютер, затем открываю доступ ко второму хостингу - и туда уже переношу программные файлы WordPress.
По 3G-соединению это делать вообще не резон, даже с учетом того, что я как следует увеличил скорость подключения (читаем как я это сделал на мобильном интернете).
Поэтому я нашел более изящный способ.
Большинство моих клиентов использует панель хостинга - ISP Manager, там есть функции переноса целого архива прямо с одного хостинга на другой - минуя мой компьютер.
Так что теперь я делаю так: создаю архив всего сайта WordPress на своем хостинге и мгновенно переношу его на второй хостинг через ту же панель ISP.
Это занимает пару секунд и совсем не жрёт трафик.
Такой способ поддерживает еще несколько панелей управления хостингом (вот тут есть более подробная информация о том, какой хостинг я рекомендую).
Дальше остается только распаковать архив в директорию нового домена. Если не знаете, как создать домен и папку для него - то есть вы совсем еще зеленый в этой области - просто попросите хостера сделать это, я еще не встречал ни одного нормального хостера, кто бы отказал в этой просьбе своему клиенту.
Если нет возможности использовать ISP панель, то переносите по старинке через FTP.
Ну вот вы и перенесли файлы.
Нужно теперь поменять в файле конфигурации wp-config.php устаревшую информацию и указать новый домен, куда был перенесен wordpress-сайт.
Там все примитивно, разберетесь. Сохраняете после изменений wp-config.php и идем дальше.
Перенос базы данных
Если вы хотите быть уверенными на 200%, что все ваши статьи, записи и настройки скопируются полностью и правильно, то копируйте базу вручную прямо с сервера вашего хостера.
Для этого заходите в панель управления хостингом, выбирайте службу PhpMyAdmin (этот программа для управления базами данных), вводите логин и пароль от базы (есть в том же файле wp-config.php) и когда попадете внутрь – просто экспортируйте нужную базу, у вас получится один файл в формате SQL.
Я вот не знаю, нужно ли подробнее описывать процесс копирования базы данных? Если вы считаете, что нужно, напишите в комментариях, тогда я возможно, сделаю отдельную подробную статью по этому вопросу.
Теперь делаем на новом хостинге то же самое – заходим в PhpMyAdmin, вводим логин и пароль от свежей только что созданной базы данных и импортируем наш SQL-архив в нее.
Всё - теперь старая база данных находится на новом хостинге.
И теперь - самое главное.
Секретный момент!
Нюанс, о котором я не знал и из-за которого после переезда на новый хостинг и домен у меня некоторые сайты под WordPress сразу не заработали.
Современные базы данных хранят в некоторых местах не только информацию о домене сайта, например, "https://moytop.com", но также индексируют эту информацию, указывая в соседних полях, из скольких символов состоит строка с именем домена, например вот так:
a:2:{s:3:"url";s:17:"https://moytop.com";s:4:"meta";s:8:"метатеги";}
s17 – означает, что в поле url – 17 символов.
И если вы просто поменяете в редакторе один домен на другой, а количество символов не поменяете, то будут ошибки в домене и те же виджеты просто не станут работать.
И что? Сидеть с калькулятором и высчитывать длину новых доменов и строк? Наверняка можно это все автоматизировать и упростить.
Да, я это делаю вместе со специальным скриптом «Safe Search and Replace on Database with Serialized». Это реально волшебная программа, которая быстро и правильно делает замену старого домена на новый в базе данных при переносе сайта. При этом скрипт делает за вас всю нудную работу – высчитывает количество символов заменяемой строки и правильно добавляет их куда нужно в новую базу данных.
Чтобы запустить скрипт, достаточно его скачать на компьютер, затем по FTP переписать всю папку в корень вашего нового сайта и ввести путь к скрипту типа такого http://ваш сайт/database в любом браузере.
Скачать программу можно в интернете – она бесплатна, поищите в сети или можете скачать с моего сервера прямо сейчас через плагин социальных сетей.
Итак, установили и открыли скрипт? После запуска вы увидите примерно такой экран:
Программа работает именно с WordPress, поэтому логин и пароль к базе возьмет из конфигурации сама, всё что вам нужно – это вписать в первое поле имя старого домена (откуда переносится сайт), во второе поле – имя нового домена (куда переносим сайт) и нажать Live Run.
Процесс пошёл! Он нагляден, тут же показывается где и какие таблицы в базе содержали значение старого домена и все ли успешно поменялось.
Домены рекомендую вводить без префикса, то есть лучше не использовать http://test2.moytop.com, пишите просто: test2.moytop.com
Ну и в конце после замены информации о домене – можете удалить скрипт с сайта, так даже рекомендуют его авторы, чтобы он не был потенциальной дырой в безопасности сайта (читайте как повысить безопасность своего сайта на WordPress за пару кликов).
Если был http а стал https
Важный момент.
Если у вас был сайт без ssl просто http.... (да, да, встретился мне такой сегодня в канун 2024 года!!), то после переезда важно заменить в базе данных все значения "http:" на "https:"
- Этим же плагином, просто запускайте новую замену.
- Затем проверьте в файлах темы чтобы нигде не осталось http
- Проверьте в корне сайта в wp-config.php чтобы там тоже было всё с https
Если главная страница загрузилась с https а внутренние нет (по-прежнему http) - скорее всего проблема в кривом хостере, пинайте его.
Как выбрать лучший хостинг я уже писал ранее.
Например, в моей практике было такое, что хостер в глобальной переменной $_SERVER возвращал на внутренних страницах путь с http и следом за ней всякие get_template_directory_uri(); и bloginfo("template_directory"); также, конечно, выдавали путь с http.
Пока не прописал жестко в wp-config.php такую штуку $_SERVER['HTTPS']='on'; проблема не решалась.
Так что имейте ввиду, что может быть корявый хостинг, а вообще все нормальные хостеры делают перенос сайта на WordPress (включая настройку SSL) - бесплатно!!
Все готово! Теперь перезагружайте страницу CTRL+F5 и если вы все сделали правильно и внимательно, то сайт перенесется на новый домен и хостинг без проблем.
Ничего не получилось?
Обратитесь на Кворк - вам перенесут всё за 500 росс. руб. в течение часа - вот тут ссылка
Перенос с помощью плагина
Мне нравится еще перенос с помощью плагина Duplicator - он довольно простой, русскоязычный и правильно переносит Вордпресс, по крайней мере я не наблюдал проблем после его работы.
И напоследок еще один простой способ!
Мне его подсказал в комментариях Василий, за что ему отдельное спасибо
Для его реализации понадобится доступ в админку и плагин Velvet Blues Update URLs.
Этот плагин удобнее всего поставить еще до переноса Вордпресс-системы (как установить плагины для WordPress) и после переноса зайти в админку и выбрать в настройках нужные параметры.
Попасть в настройки:
Нужные параметры:
То есть в первом поле - старый адрес (лучше без http, просто домен).
Во втором - новый (аналогично).
Внизу я выбираю все галочки, чтобы поменять везде, где только можно.
Вот и все, дальше жмите - на кнопку UPDATES URLs и старые ссылки в базе заменятся на новые.
Этот способ переноса работает тоже хорошо, я проверил на нескольких сайтах - все четко.
Также мне понравился плагин Better Search Replace - там все то же самое и тоже отлично работает.
И еще —
Несколько дополнительных советов по корректному переносу на другой хостинг:
- Проверьте, чтобы версия PHP была одинакова на старом и новом хостинге
- Проверьте, чтобы базы данных использовали полностью идентичную версию кодировки
- Воспользуйтесь услугой бесплатного переноса на новый хостинг от самого хостера! Вот тут я привожу хостеров, которых я уже проверил, и которые делаю бесплатный переезд сайтов к себе на хостинг.
Кстати, я не очень люблю переносить сайты вручную, поэтому сейчас приступаю к масштабному тестированию разных плагинов под WordPress именно для миграции на другой хостинг или домен. Пока все что я пробовал – не устраивали меня на 100%, в каждом был какой-то косяк.
Так что подписывайтесь на обновления, когда найду реально рабочий классный вариант - выложу на блоге.
Если задать такой путь /srdb-master/form.php то выводится страница с собщением что что-то пошло не так (((
Safe Search Replace
by interconnect/it
No idea how we got here.
Something strange has happened.
Яндекс нашел такой скрипт https://github.com/nathanielks/srdb - это он?
В архиве папка srdb-master- закинул ее в корень сайта
По адресу http://ваш сайт/database 404 страница
srdb-master надо переимановать в database или это вообще не тот скрипт?
судя по описанию это он, если вы закинули папку srdb-master в корень, то вам надо ссылаться на http://ваш сайт/srdb-master
Какой сейчас рабочий способ?
Самый нормальный по прежнему через скрипт Safe Search and Replace on Database with Serialized. Я проверял например, меняю данные через плагин, а потом через этот скрипт - он находит и конвертит больше, то что плагин не нашел.
Но в последнее время скрипт SRDB стал капризный, всякие ошибки выдает часто, не хочет запускаться на некоторых хостингах. Так что если он не сработал, то остается плагин. Там какой подойдет, такой и подойдет. Я в последнее время пользуюсь Better Search Replace https://ru.wordpress.org/plugins/better-search-replace/ - более менее, они примерно все одинаковые.
Через плагин переписал записи в БД. Использовал Easy Update Urls. Плагин полностью аналог Velvet.
В настройках админки поменял адрес сайта на новый.
Соответственно после сохранения нового адреса админка сразу вырубилась.
После этого уже перенес все содержимое на новый домен.
Появилась ошибка: Call to undefined function wp_get_current_user() in.....
Ошибку устранил путем удаления плагина Easy Update Urls через FTP.
Все сразу заработало.
Может кому пригодится.
Всех благ.
Как получить как перенести сайт вордпресс на другой домен
Вот ищу для себя хороший хостинг не слишком дорогой, сайт на Вордпресс, недавно попался мне такой вот рейтинг лучших хостингов для сайтов на данной cms что можете посоветовать из этого?
beget, reg.ru или adminvps
Всем привет кто нибудь может подсказать, вроде всё сделал правильно а сайт не работает вылазиет это https://cdn1.savepice.ru/uploads/2020/2/3/1afc796e8e31aa4e718d4ff0463d13d4-full.jpg
проверьте версию php, такое чувство, что сайт под 5.6 написан, а на хостинге, например, 7.3
попробуйте понизить версию на хостинге - под 5.6 идут 99.99% всех сайтов.
В поддержку им написал они прислали это
Насколько мы видим, предоставленная база данных не подходит для этого сайта.(как минимум отличается префикс. В конфигурационном файле указан префикс ksandr_, а в дампе wp_1 и wp_3). Пожалуйста, предоставьте корректный дамп базы данных.
Я им всё отправил что было с прошлого сайта, теперь не получиться восстановить сайт?
значит перепутали они базу когда ставили на хостинг (если у вас несколько было баз).
или вы им какую-то не ту отправили.
ну и посмотрите, может в конфигурационном файле проще поменять правильные доступы к базе данных, если там старые стоят.
wp-config в корне сайта.
ок спасибо, сейчас попытаюсь)
Поменял в wp-config в корне сайта на новые данные и не фига открываю сайт вылазиет установка вордпресс, придется похоже заново всё делать.
Спасибо что подсказывали
Вот скрины сделал
https://cdn1.savepice.ru/uploads/2020/2/3/4fa9982d5b6831d8da66da80c769feeb-full.jpg
https://cdn1.savepice.ru/uploads/2020/2/3/147470cd7e903ebdc802f77b968a3d81-full.jpg
https://cdn1.savepice.ru/uploads/2020/2/3/6d5621c428493643de4a92f559c3d776-full.jpg
да не за что, если есть исходники (для переноса база + файлы) как вариант попробовать на кворке найти исполнителя, может там простая проблема, поможет правильно настроить. Если конечно база и файлы гарантированно правильные. Кстати что за хостер? веду учет нормальных и не совсем нормальных хостеров.
Разобрался когда делали копии сайты накосячили короче, частичьно мне восстановили а остальное сам доделаю,
Хостер рег ру
Сергей, Здравствуйте!
Мне нужно перенести все содержимое с одного сайта на другой (Фейсбук забанил домен).
Вы могли бы взяться за эту работу? Я в своих знаниях не уверен.
Здравствуйте, я не занимаюсь данными услугами, но на Кворке полно исполнителей, сделают быстро и недорого https://kwork.ru/search?query=%D0%BF%D0%B5%D1%80%D0%B5%D0%BD%D0%BE%D1%81+wordpress&ref=2903&c=0
Сергей, спасибо огромное! Раньше мучился сам, все никак не получалось - то там,Ю то там ошибку сделаю. Просил ребя с хостинга сделать полноценную копию блога. а теперь сам за несколько минут ВСЕ сделали с помощью скрипта. И сейчас все работает замечательно! Спасибо!
После переноса сайта на другой домен пропали хедер и футер. Причём если меняю тему, то они появляются а именно в той теме, в которой сделан сайт(porto) они снова е отображаются. Вроде бы понятно, что что то может быть в настройках шаблона, но где и что так и не нашёл.
Сайт http://cargo12.skvarw9u.bget.ru
А базу полностью скопировали?
Как в статье описано - с изменением путей к домену?
Не через плагин, а с помощью скрипта.
Посмотрите еще версию PHP на новом хостинге.
Она должна соответствовать старой версии. Попробуйте переключить, если не соответствует. Часто бывает, что версия другая и некоторые скрипты не работают.
Если ничего не помогает, то на кворке за 500р перенесут https://kwork.ru/search?query=%D0%BF%D0%B5%D1%80%D0%B5%D0%BD%D0%BE%D1%81%20%D1%85%D0%BE%D1%81%D1%82%D0%B8%D0%BD%D0%B3&c=0?ref=2903
БД скопировал полностью вручную. Через экспорт импорт. Ссылки менял в админке через плагин Search & Replace и плагин Velvet Blues Update URLs
я бы попробовал еще раз выгрузить корректную БД со старого сайта.
затем импортировал бы ее.
затем только через скрипт S&R прогнал бы без других плагинов.
и посмотрел что получилось.
если стоит плагин кеширования, то сбросьте кеш.
и также перед этим проверьте, чтобы кодировки баз данных совпадали, иногда бывает, что на другом хостинге используется немного другая кодировка. Должно быть всё аналогично.
Если не так, то напишите хостеру, чтобы установил базу в нужную кодировку.
Плюс еще один вариант, которым не грех воспользоваться.
Очень часто хостеры заявляют о бесплатном переносе сайта к себе на хостинг.
В этом случае вы просто даете доступ к старому сайту, они в течение пары часов всё переносят бесплатно.
Там обычно работают люди, которые с утра до вечера занимаются всякими переносами, для них это несложная задача будет.
Если найдете в чем причина была, то отпишитесь пожалуйста, интересно почему у вас не грузился хедер, если до переноса все работало и база полностью идентична и настройки php одинаковы...
Плагин, приведенный автором не сработал, а запуск скрипта все сделал ОК! Спасибо.
Добрый день!
Перенесла сайт с одного домена на другой. С помощью скрипта изменила все урлы в базе данных.
Сайт открывается, все хорошо, но один плагин со слайдером просто отказывается отображаться.
Подскажите, пожалуйста, в чем может быть проблема?
Перенесла с https://bestvitrina.ru/ на https://hkitchen.ru/ в рамках одного хостинга
Здравствуйте, у меня в браузере ваши оба сайта совершенно идентичны, не заметил, чтобы они чем-то отличались. Проверьте в своем браузере их в режиме инкогнито, может старый кеш подгружает что-то.
Скрипты рабочие и не раз проверены, читайте внимательно все написанное.
Сергею Привет!!!
У меня не работает скрипт
Сергей Здравствуйте! Спасибо что на меня сослались)))) приятно!
Спасибо, Сергей. Я раньше тоже после переноса БД только в wp-options менял старый сайт на новый, теперь с помощью программы search/replace наконец-то нормально перенес сайт. Благодарю!)
Я как новичек, переношу просто: экспорт-импорт или плагином All-in-One WP Migration.
Да, отменный плагин.
Вот еще плагин для wordpress - Velvet Blues Update URLs - обновляет ссылки в базе данных, после переноса БД на хостинг. Ставим плагин и все. Очень интересный плагин.
Да, интересно, надо будет потестить!
Сергей Здравствуй.
Обрати внимание пользователей, что га локалхосте когда они создают что то на wordpress
Создается файл
.htaccess
# BEGIN WordPress
RewriteEngine On
RewriteBase /3/base1/r1/wordpress/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /3/base1/r1/wordpress/index.php [L]
# END WordPress
и как видно из него если мы перенесем его на хостинг, а все так и делают, сайт работать не будет. По этому правим файл таким образом
.htaccess
# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
Намучился я с переносами, из-за этого файла.
Господа обратите внимание и не забудьте файл отредактировать. А то после переноса, работать ничего не будет.
Ну вот ты и обратил, уверен многим пригодится ))
А я сам просто локалхостом никогда не занимался, мне всегда было проще делать любой сайт сразу в боевых условиях прямо у хостера.
У хостера .. меня несколько раз прокатить пытались, но договор и 50% процентная оплата, все же не так обидно. То им сайт прям сейчас подай, то пока не нужен и сайт даже еще не видели, а уже передумали.
Сергей извини, еще раз напишу. Представляешь, в программе правки БД ввел старый домен http://localhost/3/base1/r1/wordpress/ с http и / слешем на конце и в новой http://pupkin.info/ и заработало. Само собой. Странно как то
ну вот где-то в этих слешах и http собака была и зарыта )
Сергей привет тебе!
Не все переносит, смотри у меня на Денвере лежит сайт в папке http://localhost/3/base1/r1/wordpress/ переношу на домен pupkin.info... Результат много чего не работает, меню, слайдер. Пробовал много раз, результат тот же.
В программе переноса указывал Старый домен localhost/3/base1/r1/wordpress/ Новый домен pupkin.info ну не получается. Сайт да, отображается, но много чего не работает. Почему?
Видимо не до конца заменили старый путь на новый.
Проверьте в исходном коде - везде ли стоит новый домен, может из-за длинного локального пути localhost/3/base1/r1/wordpress/ упустили какой-нибудь символ.
Если везде стоит в исходном коде и в базе задействован новый домен, а некоторые элементы не работают, то имеет смысл смотреть в сторону совместимости php сайта и конкретного хостинга. Я сталкивался с ситуациями, когда на одном хостинге все работало отлично, а на другом вообще не работало. Где-то могут быть разные настройки для скриптов, для версии php и т.п. Тут уже универсального решения нет.
Обычно я использую известные проверенные хостинги, с ними вопросов нет (какой хостинг рекомендую - http://moytop.com/sozdanie-sayta/7-1/chto-takoe-xosting)
Как вариант, обратиться на биржу за помощью программисту, такая работа стоит не более 300р. (как правильно нанимать фрилансеров - http://moytop.com/optimizaciya-raboty/otnoshenie/kak-pravilno-najti-i-nanyat-frilansera)
Да я сам программист Сергей. В коде PHP ИЛИ Базы данных ?
а, ну тогда конечно решите вопрос, если даже я не будучи программистом справился ))
в базе проверьте - чтобы нигде не забыли поменять, мало ли где-то что-то забыли типа префикса или слешей.
а в коде смотрите только совместимость с текущим хостингом. Самый простой способ - попробуйте залить сайт на другой хостинг (тот же бегет дает 30 дней бесплатно на тест и т.п.). Если все работает, то поменяйте хостинг да и все. Если не работает, а на локале все ок, то скорее всего в базе пути не везде прописаны.
Сергей, где такой красивый шаблон можно взять как у Вас?
Да, статья понравилась, скоро буду по ней переносить сайт с localhost
Вы имеете ввиду блог? Нарисовал в Фотошопе http://moytop.com/sozdanie-sayta/7-5/fotoshop-skachat-besplatno-na-russkom
Красиво!
У меня только один раз возникла потребность перенести сайт на другой хостинг. Только я сама не решилась, обратилась к фрилансерам. )
Спасибо, я справилась. Просто сделала ошибку: скачала всю базу localhost, а не конкретную базу. Все остальное было правильно. Когда это поняла и скачала то, что надо, все заработало. Спасибо за ответ. Это все я, конечно же, проверяла и кэш браузера чистила, и в другом браузере пробовала. Просто встала в тупик: вроде, все правильно сделала, а не работает :)
У меня какая-то странная проблема: по имени домена сайт открывается, а в админку попасть не могу: редиректит на старый домен. И все ссылки ведут также на старый домен, хотя в базе данных замену старого домена на новый сделала. Где может быть косяк?
в wp-config посмотрите.
должны быть такие строчки:
define('WP_SITEURL','http://ваш сайт');
define('WP_HOME','http://ваш сайт');
я наблюдал на многих темах, что их вообще банально нет.
ну и CTRL + F5 обновите страницу админки.
можно из другого браузера попробовать открыть.