Описание проблемы
Ситуация: Вы установили CMS на свой домен в зоне .beget.tech, закончили разрабатывать сайт, купили домен в зоне .ru и прилинковали его к той же директории.
Например:
- default.beget.tech - домен, на котором разрабатывался сайт;
- normal.ru - домен, на который Вы хотите перенести сайт;
- Оба домена прилинкованы к одному и тому же сайту /home/u/user/default.beget.tech/public_html;
- Сайт подключется к базе данных user_wp1.
Открываем домен (normal.ru), сайт открывается, но все ссылки на сайте ведут на домен default.beget.tech
Решение
Терминал - браузерная альтернатива SSH соединению, доступная в личном кабинете при включённом SSH. Включить SSH можно в главном разделе панели управления хостингом, переключив кнопку SSH в положение "ON" в блоке, расположенном с левой стороны. О том, как узнать имя архива, мы описали в начале данной статьи.
Заходим в директорию сайта, адрес которой можно узнать в разделе Сайты:
user@testserver:~ [0] $ cd /home/u/user/default.beget.tech/
Далее находим все вхождения домена default.beget.tech в файлах:
user@testserver:~/home/u/user/default.beget.tech [0] $ grep -rl default.beget.tech .
В результате выполнения команды мы получим список файлов (пример ниже):
./templates/Default/main.tpl
./05f012a91b581da7242b4a85a0d088b2/words.db
./engine/cache/system/banners.php
./engine/cache/tagscloud_7a1920d61156abc05a60135aefe8bc67.tmp
./engine/data/config.php
./engine/modules/mymod.php
Далее выполняем команду замены вхождения одной строки на другую:
user@testserver:~/home/u/user/default.beget.tech [0] $ sed -e "s#default.beget.tech#normal.ru#g" -i ./templates/Default/main.tpl
user@testserver:~/home/u/user/default.beget.tech [0] $ sed -e "s#default.beget.tech#normal.ru#g" -i ./05f012a91b581da7242b4a85a0d088b2/words.db
и т.д.
Также можно выполнить процедуру в одну строку, если список файлов не слишком длинный:
user@testserver:~/home/u/user/default.beget.tech/ [0] $ grep -rl default.beget.tech . | xargs sed -e "s#default.beget.tech#normal.ru#g" -i
или так:
user@testserver:~/home/u/user/default.beget.tech/ [0] $ grep -rl default.beget.tech . | while read line; do sed -e "s#default.beget.tech#normal.ru#g" -i $line; done
После этого необходимо заменить все вхождения домена в базе данных. Узнать, какая база данных используется, можно из конфигурационного файла сайта. После того, как мы узнали имя базы данных, имя пользователя базы данных и пароль, делаем резервную копию базы данных (дамп), меняем в ней значения старого домена на новый и загружаем исправленный дамп обратно в базу.
user@testserver:~/home/u/user/default.beget.tech/ [0] $ mysqldump -u USER -pPASSWD USER | sed -e "s#default.beget.tech#normal.ru#g" > dump.sql
user@testserver:~/home/u/user/default.beget.tech/ [0] $ mysql -u USER -pPASSWD USER < dump.sql
user@testserver:~/home/u/user/default.beget.tech/ [0] $ rm dump.sql
USER - это имя пользователя базы данных (оно же имя базы данных, например: user_wp1);
PASSWD - пароль к базе данных, который Вы установили. Заметьте, что между ключом -p и паролем пробел отсутствует.
Проверяем. Всё должно работать корректно. Если проблем не обнаружено, то архив, сделанный в начале статьи, можно удалять. Если же после перенастройки сайт перестал работать - необходимо уточнить, какую CMS Вы используете, и проверить, работает ли ее Панель администратора. Если она работает - в настройках CMS нужно переприменить все параметры, где указано доменное имя, переприменить все параметры с новым доменом там (в многих случаях, шаблоны сайтов используют сериализацию, которая должна быть перегенерирована с новым доменом) и сбросить кэш сайта, если таковой используется (включен).
Удачной работы! Если возникнут вопросы - напишите нам, пожалуйста, тикет из Панели управления аккаунта, раздел "Помощь и поддержка".