Як замінити всі посилання в файлах і базі даних сайту

Ця стаття буде бонусною в циклі про боротьбу зі змішаним контентом при перенесенні сайту з 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'
— фраза, яку шукаємо../
— каталог, в якому шукати; цей запис означає поточний каталог, де ви зараз перебуваєте;|
— символ передачі результату виведення іншій програмі, тобто, весь результат роботи команди grep буде переданий на вхід іншій програмі, що викликається далі;xargs
— приймає цей список і виконує команду над кожним файлом.sed
— потужна утиліта для пошуку та заміни тексту.-i
— редагує файли на місці, без створення копій.'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),
- підтримує серіалізовані дані.
WP-CLI зазвичай попередньо встановлений на VPS або хостингу. Якщо ні — техпідтримка допоможе.
Зауваги
- За бажанням перед початком робіт можна ввімкнути 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
|
Наш телеграм
з важливими анонсами, розіграшами й мемами
Приєднатися