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

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' — фраза, яку шукаємо.
  • ./ — каталог, в якому шукати; цей запис означає поточний каталог, де ви зараз перебуваєте;
  • — символ передачі результату виведення іншій програмі, тобто, весь результат роботи команди 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 — це ризиковано.
  • Після виконання всіх дій: перевірте роботу сайту, переконайтеся, що немає змішаного контенту, якщо щось пішло не так — відновіть з бекапу. Ви ж зробили бекап перед початком робіт?)

Ось і все, тепер ви знаєте, як знайти та замінити будь-який текст у всіх файлах, де він зустрічається. Якщо ви відчуваєте невпевненість в такій відповідальній справі – ми завжди раді вам допомогти

Telegram Hostpro

Наш телеграм

з важливими анонсами, розіграшами й мемами

Приєднатися

Можливо, вас зацікавить

Як увімкнути Maintenance Mode на сайті WordPress?

Як увімкнути Maintenance Mode на сайті WordPress?

Maintenance Mode – це режим технічного обслуговування сайту. Коли він активний, при спробі зайти...

Anastasiia Saksa | Оновлено: 06.05.2025

Встановлення та налаштування локального вебсервера 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