Що таке хотлінк і чому це проблема
Хотлінк — це коли чужий сайт вставляє тег <img> із прямим посиланням на картинку з вашого сервера, замість того щоб скопіювати файл собі. Картинка відображається на чужій сторінці, а трафік і навантаження на канал і на I/O диска несе ваш хостинг. При популярному зображенні на форумі з великою відвідуваністю рахунок іде на гігабайти трафіку на добу без жодного візиту на ваш сайт.
Hotlink Protection у cPanel закриває цю дірку: сервер перевіряє заголовок Referer запиту і віддає картинку лише тим, хто прийшов із дозволених доменів.
Як увімкнути захист у cPanel
Відкрийте cPanel → Security → Hotlink Protection. У полі URLs to allow access впишіть домени, з яких показ картинок дозволено — свій основний домен, дзеркала і піддомени. У полі Direct request вкажіть, що робити при зверненні взагалі без заголовка Referer: браузери і частина застосунків його не надсилають.
У полі Redirect URL можна вказати адресу заглушки — картинку з написом, що оригінал знаходиться на вашому сайті. Список розширень за замовчуванням: jpg jpeg png gif bmp, його можна розширити до webp svg mp4.
Що відбувається з .htaccess після увімкнення
Інструмент дописує блок RewriteCond і RewriteRule у файл .htaccess кореневої папки. Перевірити результат можна через файловий менеджер:
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^https?://(www\.)?example\.com [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ - [NC,F,L]
Правило пропускає запити з порожнім Referer (перший рядок) і з доменів зі списку дозволених, все інше блокує кодом 403 Forbidden.
Ризики: що здатне зламатися
| Джерело трафіку | Referer | Ризик після увімкнення |
|---|---|---|
| Пошук Google, перехід за посиланням | Є, домен пошуковика | Не блокується |
| Facebook, попередній перегляд посилання | Часто порожній | Залежить від налаштування Direct request |
| RSS-читалки і поштові клієнти | Зазвичай порожній | Залежить від налаштування Direct request |
| Чужий форум із прямим посиланням на картинку | Домен форуму | Блокується, це і є мета |
Якщо дозволити Direct request без Referer, частина чужих хотлінків все одно пройде — багато хто обходить перевірку, просто не надсилаючи заголовок. Повного захисту Hotlink Protection не дає, але відсікає основну масу автоматичних завантажень і береже ліміти хостингу за трафіком і I/O.
Як перевірити, що правило працює
Відкрийте картинку з вашого сайту напряму в браузері — вона повинна показатися, тому що Referer при введенні адреси в рядок порожній і дозволений за замовчуванням. Далі перевірте через curl із підробленим заголовком стороннього домену:
curl -I -e "https://stranger-site.example/" https://your-domain.example/images/photo.jpg
Код відповіді 403 підтверджує, що захист працює. Код 200 означає, що домен stranger-site.example або в списку дозволених, або правило ще не збереглося.
Коли Hotlink Protection не підходить
Якщо картинки треба вбудовувати на партнерських сайтах навмисно — наприклад, віджет із цінами або логотип для реферальної програми — додайте домен партнера в список дозволених явно. Для картинок, які публікуються в соцмережах через Open Graph, додайте домени facebook.com, t.me та інші майданчики, інакше прев'ю посилань перестануть показуватися.
Підсумок: чек-лист налаштування Hotlink Protection
- Увімкніть захист через cPanel → Security → Hotlink Protection
- Додайте до дозволених доменів свій сайт, дзеркала і майданчики соцмереж
- Налаштуйте Direct request залежно від того, важливий ситуації трафік без Referer
- Перевірте правило командою curl із підробленим Referer
- Перегляньте список розширень, якщо хотлінкають не лише картинки, а й відео