Особенности привязки домена в Wordpress

Wordpress требует, чтобы в базе данных хранился домен сайта, и он может быть только один. Если попробовать открыть сайт с другого домена, Wordpress перенаправит его на «свой». Поэтому после переноса сайта на новый домен или переход на HTTPS нужно всегда привязывать домен не только в нашей панели управления, но и на самом сайте.

Кириллические домены при привязке нужно указывать в кодировке Punycode, иначе получится циклический редирект. Можете воспользоваться онлайн-инструментами для конвертации.

Поменять домен на сайте можно тремя способами:

  1. Админ. панель — удобный способ обновить значения в базе данных, если сайт доступен.
  2. База данных — подойдет, если сайт недоступен.
  3. Файл конфига — подойдет, когда нужно задать свою логику выставления домена.

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

Перепривязка домена в админ. панели

Перейдите в «Настройки» — «Общие». После этого можно поменять домен в полях «Адрес Wordpress» и «Адрес сайта».

Если вы переводите сайт на другой домен, советуем сделать это заранее. Когда Wordpress начнет работать на новом домене, привяжите к сайту новый домен в нашей панели управления.

Перепривязка домена в базе данных

Когда сайт не работает, можно исправить домен вручную прямо в базе данных.

  1. В своей панели управления перейдите в раздел «Базы данных» и кликните по ссылке «phpMyAdmin» под именем нужной базы.
  2. Для входа используйте пароль базы данных — найти его можно в конфигурационном файле wp-config.php в строке define('DB_PASSWORD', 'пароль').
  3. Выберите таблицу «wp_options» и перейдите на вкладку «Обзор».
  4. Измените значения полей 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 — указывает, что нужно показать отчет только по измененным таблицам

После выполнения команды вы сможете увидеть, в каких таблицах и сколько раз поменялся домен.