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

post thumbnail

Эта статья является бонусной в цикле о борьбе со смешанным контентом при переводе сайта с 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 — это рискованно.

После всех изменений проверьте работу сайта и убедитесь, что нет смешанного контента. Если что-то пошло не так — восстановите сайт из резервной копии. Вы ведь сделали бэкап перед началом, правда?

Вот и всё. Теперь вы знаете, как найти и заменить любой текст во всех файлах сайта. Если не уверены в своих действиях — мы всегда готовы помочь.

Telegram Hostpro

Наш телеграм

с важными анонсами, розыгрышами и мемами

Присоединиться

Возможно, вас заинтересует

Установка и настройка локального веб-сервера MAMP на Windows

Установка и настройка локального веб-сервера MAMP на Windows

Локальная среда разработки – это незаменимый инструмент для любого веб-разработчика. Она позволяет тестировать сайты,...

Maryana Movchaniuk | Обновлено: 10.04.2025

Как создать сайт на BOLT NEW и загрузить его на хостинг

Как создать сайт на BOLT NEW и загрузить его на хостинг

Чтобы создать сайт, больше не нужно писать код и продумывать дизайн – ИИ-ассистенты могут...

Anastasiia Saksa | Обновлено: 10.04.2025

Установка и настройка локального веб-сервера WampServer на Windows

Установка и настройка локального веб-сервера WampServer на Windows

WAMP (Windows, Apache, MySQL, PHP) на Windows VPS – доступное и мощное решение для...

Maryana Movchaniuk | Обновлено: 10.04.2025

Установка и настройка локального веб-сервера XAMPP на Windows

Установка и настройка локального веб-сервера XAMPP на Windows

Для эффективной разработки и тестирования веб-сайтов необходима локальная среда, которая позволяет быстро и оперативно...

Maryana Movchaniuk | Обновлено: 08.04.2025