Решив изменить адрес сайта, следует помнить, что помимо изменения домена в настройках хостинга, необходимо изменить и несколько настроек в самом WordPress. Если этого не сделать, сайт или часть его функционала перестанет работать.
При переносе сайта с локального сервера на рабочий также важно не забыть о смене домена, если адреса отличаются. Наша статья поможет разобраться в чем дело и правильно изменить адрес сайта, чтобы он смог работать должным образом.
Почему WordPress не работает с новым доменом
Для построения всех ссылок внутри WordPress используются несколько настроек, которые хранят в себе адрес сайта (его домен). Задаются они единожды в момент установки WordPress после чего сохраняются в таблице wp_options
базы данных и требуют ручного обновления, если вы решили изменить адрес сайта.
О чем следует помнить перед сменой домена
Помимо обновления настроек доменов на странице Общие настройки (Настройки → Общие), стоит вспомнить и еще о некоторых вещах, которые имеют место быть.
- Ссылки в статьях и страницах.
- Ссылки в настройках тем и плагинов.
- Картинки в статьях, страницах и других местах сайта.
- Колонка
guid
в таблицеwp_posts
и т. п.
Иногда домен может храниться в виде сериализованного значения внутри базы данных. На практике это происходит, если в одну «ячейку» базы данных записывается целый массив значений. И если количество символов в новом и старом домене будет различаться, то осечку дадут большинство способов с простой заменой через поиск, о которых «рассказывает интернет».
На иллюстрации ниже в «ячейке» 1 хранится обычное значение, а в 225 сериализованное, где помимо самого значения указывается и его размер.
К счастью, обо всем этом заботится утилита WP-CLI, которая умеет выполнять поиск и замену строк где бы и в каком формате они не хранились в базе данных. Работу с ней мы и затронем ниже в этой статье, но обо всем по порядку.
«Трудности» с кириллическими доменами .рф
Система доменных имен (DNS) создана так, что адреса сайтов могут содержать лишь буквы английского алфавита, цифры и символ «-». Все прочие символы должны быть записаны в качестве комбинаций из этих допустимых символов. Для доменов вида мой-сайт.рф
это означает, что запись домена в настройках WordPress необходимо производить в формате Punycode. Например, домен мой-сайт.рф
в Punycode будет выглядеть как xn----8sbzclmxk.xn--p1ai
.
Сконвертировать домен .рф
из кириллицы в Punycode можно автоматически на сайте mothereff.in/punycode.
Изменяем домен сайта с помощью WP-CLI
Утилита WP-CLI — универсальный инструмент среди множества возможностей которого есть и грамотный поиск с заменой любых строк внутри базы данных. Мы подразумеваем, что WP-CLI уже установлен на хостинге. Если это не так, можно попросить поддержку провайдера установить утилиту, или выполнить процедуру смены домена на своем локальном сервере.
Перед началом не забудьте сделать резервную копию базы данных на всякий случай.
Итак, чтобы изменить домен сайта, подключаемся по SSH к серверу и с помощью команды cd
переходим в папку со своим сайтом.
ssh user666@old-domain.ru -p 7777 # По умолчанию при подключении используется порт 22, # но на многих хостингах порт специально изменяют # на другой, например, в примере выше это порт 7777. # Вводим пароль ? cd /home/user666/old-domain.ru/public_html/ # Путь до сайта может быть другим
С помощью команды search-replace
«попросим» WP-CLI заменить old-domain.ru
на new-domain.com
.
wp search-replace 'old-domain.ru' 'new-domain.com'
Команда в таком виде заменит old-domain.ru
на new-domain.com
лишь в таблицах, которые имеют отношение к текущей установке WordPress. После выполнения выведется таблица с небольшой статистикой.
Используя дополнительные атрибуты, можно указать конкретные таблицы и колонки в таблицах, где необходимо производить замену. Будьте осторожны, если в одной базе данных расположены таблицы нескольких сайтов. Также в WP-CLI есть команда wp option update
для обновления отдельных опций.
Изменяем домен сайта с помощью PHP-скрипта
В случае, если по каким-то причинам WP-CLI недоступен, вы можете воспользоваться PHP-скриптом от компании Interconnect IT из Ливерпуля. Для его использования достаточно лишь FTP-доступа. Как и WP-CLI, скрипт заботится обо всех форматах данных и не сломает сериализованные значения.
Снова замечу, что на всякий случай лучше сделать резервную копию базы перед началом.
1. Итак, скачиваем ZIP-архив последней версии с Github.
2. Зайдем в корневую папку сайта на сервере через FTP. Прямо в корне установки WordPress создаем «секретную» папку с любым именем. Обязательно сделайте имя как можно более сложным из букв разного регистра, цифр и символа «-». Такое имя необходимо для того, чтобы никто кроме вас не смог найти ее и воспользоваться скриптом — он не требует авторизации и любой пользователь, зашедший на страницу, сможет взаимодействовать с вашей базой данных.
3. Распакуем содержимое архива, скаченного на первом шаге, и загрузим в «секретную» директорию.
4. Откроем скрипт, который мы только что загрузили. Для этого откройте в браузере страницу example.org/replacer-x36D891EHY-/
. Как можно догадаться, «replacer-x36D891EHY-» — это название секретной директории.
5. На открывшейся странице в поле «replace» необходимо указать свой старый домен (например, old-domain.ru
), а в поле «with» новый домен (например, new-domain.com
).
Галочку «use regex» снимаем. Данные в секции «database» должны автоматически заполниться при открытии страницы. В секции «tables» выбираем «all tables».
6. Секция «actions» содержит несколько кнопок для действий. Нас интересует кнопка «live run». Нажав на нее откроется диалоговое окно, в котором необходимо подтвердить запуск, нажав кнопку «Ок».
7. Начнется процесс поиска и замены домена. Не закрывайте страницу! Во время выполнения будут появляться результаты операции.
8. После успешной замены необходимо удалить «секретную» директорию со всем содержимым. Это можно сделать через FTP-клиент. Через кнопку «delete me» внизу страницы скрипт может не удалиться, поэтому надежнее сделать это через FTP-клиент.
Вместо заключения
Мы рассмотрели два наиболее правильных пути для смены домена WordPress-сайта. В интернете описываются и другие способы сделать это, но большинство из них не учитывают многих тонкостей хранения данных в базах данных.
Инструменты, описанные в статье для замены адреса сайта, могут использоваться и для других целей, когда необходимо выполнить поиск с заменой каких-либо строк внутри базы данных. Если у вас возникли вопросы во время смены адреса сайта, напишите комментарий и мы постараемся вам помочь.