Особенности привязки домена в Wordpress
Wordpress требует, чтобы в базе данных хранился домен сайта, и он может быть только один. Если попробовать открыть сайт с другого домена, Wordpress перенаправит его на «свой». Поэтому после переноса сайта на новый домен или переход на HTTPS нужно всегда привязывать домен не только в нашей панели управления, но и на самом сайте.
Кириллические домены при привязке нужно указывать в кодировке Punycode, иначе получится циклический редирект. Можете воспользоваться онлайн-инструментами для конвертации.
Поменять домен на сайте можно тремя способами:
- Админ. панель — удобный способ обновить значения в базе данных, если сайт доступен.
- База данных — подойдет, если сайт недоступен.
- Файл конфига — подойдет, когда нужно задать свою логику выставления домена.
Причем важно помнить, что если значения в базе данных и файле конфига разные, в приоритете будет файл конфига.
Перепривязка домена в админ. панели
Перейдите в «Настройки» — «Общие». После этого можно поменять домен в полях «Адрес Wordpress» и «Адрес сайта».
Если вы переводите сайт на другой домен, советуем сделать это заранее. Когда Wordpress начнет работать на новом домене, привяжите к сайту новый домен в нашей панели управления.
Перепривязка домена в базе данных
Когда сайт не работает, можно исправить домен вручную прямо в базе данных.
- В своей панели управления перейдите в раздел «Базы данных» и кликните по ссылке «phpMyAdmin» под именем нужной базы.
- Для входа используйте пароль базы данных — найти его можно в конфигурационном файле wp-config.php в строке
define('DB_PASSWORD', 'пароль')
. - Выберите таблицу «wp_options» и перейдите на вкладку «Обзор».
- Измените значения полей
siteurl
иhome
сhttps://[старый_домен]
наhttps://[новый_домен]
.
Отключение привязки домена в конфиге
Также есть способ заставить сайт работать на любом домене, никаких редиректов не будет. Но предупреждаем, что это подойдет не всем сайтам — используйте осторожно.
Для этого в конфигурационный файл wp-config.php нужно добавить следующий код:
if(isset($_SERVER['HTTPS'])) {
$schema = 'https://';
}
else {
$schema = 'http://';
}
define('WP_HOME', $schema.$_SERVER['SERVER_NAME']);
define('WP_SITEURL', $schema.$_SERVER['SERVER_NAME']);
Этот способ может быть полезен не только при переносе сайта на новый домен, но и при возникновении каких-либо неполадок в работе сайта, связанных с его доменом.
Изменение домена во всей базе данных
Иногда недостаточно поменять только два значения в базе данных, потому что сайт может брать домен из других источников. Например, из таблицы «wp_posts». Тогда сам сайт будет открываться, но изображения или внутренние ссылки будут вести на другой домен.
В таких ситуациях можно заменить домен по всем таблицам с помощью утилиты wp. Для этого придется использовать терминал, но если у вас что-то не получится, напишите в поддержку, мы вам поможем.
Подключитесь к своему аккаунту по SSH (см. Подключение по SSH) и перейдите в директорию со своим сайтом. Например, если сайт в панели управления называется «wordpress», команда будет выглядеть так:
cd ~/wordpress/public_html
После этого нужно составить команду, подставив старый и новый домен:
wp search-replace 'старый_домен' 'новый_домен' --all-tables --report-changed-only
Здесь есть два флага:
--all-tables
— указывает, что нужно проходиться по всем таблицам, даже которые не начинаются с префиксаwp
--report-changed-only
— указывает, что нужно показать отчет только по измененным таблицам
После выполнения команды вы сможете увидеть, в каких таблицах и сколько раз поменялся домен.