Что такое хотлинк и почему это проблема
Хотлинк — это когда чужой сайт вставляет тег <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
- Пересмотрите список расширений, если хотлинкают не только картинки, а и видео