Как заменить все ссылки в файлах и базе данных сайта

Эта статья является бонусной в цикле о борьбе со смешанным контентом при переводе сайта с HTTP на HTTPS. Описанные здесь методы обычно применяются нашими специалистами техподдержки и предназначены для опытных пользователей хостинга, работающих в командной строке (SSH).
Зачем может понадобиться замена ссылок?
В зависимости от CMS или структуры скриптов (если сайт самописный), в коде могут использоваться как относительные, так и абсолютные ссылки. Например:
Относительные:
<img src="./app/img/header/logo.png" alt="Company logo">
Абсолютные:
<img src="https://site.com/wp-content/themes/default/app/img/header/logo.png" alt="Company logo">
Относительные ссылки так называются потому, что указывают путь относительно текущего местоположения страницы на сервере.
Если на сайте используются абсолютные ссылки, их может понадобиться заменить в следующих случаях:
• перенос сайта на новое доменное имя или создание dev-копии;
• переход на протокол HTTPS;
• перемещение файлов сайта на другой сервер с иной структурой каталогов, при которой путь к директории сайта изменился.
Конечно, идеальным вариантом будет изначально использовать относительные ссылки или, если вы работаете с WordPress, применять функции get_template_directory_uri()
и get_template_directory()
. Но наш 24-летний опыт показывает: мир не идеален, и не каждый разработчик задумывался об этом, создавая сайт много лет назад.
Убедитесь, что у вас есть рабочая резервная копия
Перед выполнением любых дальнейших действий убедитесь, что у вас есть рабочая резервная копия всех изменяемых файлов. Возможны ошибки, которые будет гораздо проще и быстрее устранить, просто откатив изменения. Инструкция актуальна для тарифов хостинга и серверов на базе Linux.
Замена ссылок в файлах
Подключитесь к серверу по SSH (инструкция здесь), перейдите в корневую директорию сайта:
cd /home/username/public_html/
Чтобы заменить значение во всех текстовых файлах (например, .php, .html, .js), используйте команду:
grep -liR 'http://old-domain.com' ./ | xargs sed -i 's|http://old-domain.com|https://new-domain.com|g'
Разберём пошагово:
grep
— команда для поиска текста в файлах;-l
— выводит только имена файлов, в которых найдены совпадения;-i
— игнорирует регистр букв (используйте при необходимости);-R
— рекурсивный поиск во всех файлах и папках, начиная с указанной директории;'http://old-domain.com'
— фраза, которую ищем;./
— каталог, в котором производится поиск (текущий);|
— передаёт результат следующей программе;xargs
— принимает список файлов и выполняет указанную команду для каждого;sed
— утилита для поиска и замены текста;-i
— вносит изменения непосредственно в файлы;'s|...|...|g' — 's|...|...|...|g'
— шаблон замены s — означает «substitute» (заменить); первый аргумент (http://old-domain.com) — что искать; второй (https://new-domain.com) — на что заменить; g — глобальная замена в каждой строке (все вхождения, не только первое).|
выбран в качестве разделителя вместо /, потому что URL содержит /, и это облегчает чтение команды.
Замена ссылок в базе данных WordPress
Важно: В WordPress нельзя просто отредактировать дамп базы SQL вручную — из-за сериализации PHP-массивов данные могут быть повреждены.
Правильный способ — использовать WP-CLI:
wp search-replace 'http://old-domain.com' 'https://new-domain.com' --skip-columns=guid --all-tables
Эта команда:
- работает со всеми таблицами,
- не затрагивает guid (важно для RSS),
- поддерживает сериализованные данные.
На VPS или хостинге WP-CLI, как правило, установлен по умолчанию. Если нет — обратитесь в техподдержку.
Рекомендации
- По желанию перед началом работ можно включить maintenance mode в CMS.
- Очистите файловый кеш до и после замены.
- Не используйте replace из mysql-utils — это устаревший инструмент, удалённый из современных версий.
- Не экспортируйте дамп и не редактируйте его вручную при работе с WordPress — это рискованно.
После всех изменений проверьте работу сайта и убедитесь, что нет смешанного контента. Если что-то пошло не так — восстановите сайт из резервной копии. Вы ведь сделали бэкап перед началом, правда?
Вот и всё. Теперь вы знаете, как найти и заменить любой текст во всех файлах сайта. Если не уверены в своих действиях — мы всегда готовы помочь.
Возможно, вас заинтересует

Установка и настройка локального веб-сервера MAMP на Windows
Локальная среда разработки – это незаменимый инструмент для любого веб-разработчика. Она позволяет тестировать сайты,...
Обновлено: 10.04.2025
|
Установка и настройка локального веб-сервера WampServer на Windows
WAMP (Windows, Apache, MySQL, PHP) на Windows VPS – доступное и мощное решение для...
Обновлено: 10.04.2025
|
Установка и настройка локального веб-сервера XAMPP на Windows
Для эффективной разработки и тестирования веб-сайтов необходима локальная среда, которая позволяет быстро и оперативно...
Обновлено: 08.04.2025
|
Наш телеграм
с важными анонсами, розыгрышами и мемами
Присоединиться