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

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

Наш телеграм

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

Приєднатися

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

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