Защита от хотлинка исключая поисковики

Fader

Постоялец
Регистрация
7 Май 2008
Сообщения
66
Реакции
15
Помогите составить правила для htaccess защиты от хотлинка исключая поисковиков, чтобы можно было получать трафик с Яндек.Картинок, Гугл.Картинок и т.д.

Вот так будет правильно: ?

RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^https?://(.*)?(mysіte\.com|google(.*)|yandex(.*))/.*$ [NC]
RewriteRule \.(jpg|jpeg|png|bmp|gif)$ - [NC,F,L]
 
От парсеров это не защитит, так как много ума подставить нужный реферер не нужно. Лучше всего кодировать картинки в base64, когда их выводите:
Код:
<?php
$imagedata = file_get_contents("/path/to/image.png");
$base64 = base64_encode($imagedata);
?>
<img src="data:image/jpeg;base64,<?= $base64; ?>" />
 
спасибо конечно, но пока такая задача не стоит.
 
От парсеров это не защитит
тс это и не просит, он от хотлинка (когда картинку вставляют на другом сайте. место на диске и трафик гоняется с его сервера, а выгоду (может быть) получает кто-то другой) закрыться хочет.
 
вообще если разобрать правила касающиеся непосредственно юзерагентов яндекса и гугла то что касается Яндекса - все его юзерагенты содержат Для просмотра ссылки Войди или Зарегистрируйся (Для просмотра ссылки Войди или Зарегистрируйся)
А вот с Гуглом не все так однозначно. "Googlebot-Image" не содержит URI (Для просмотра ссылки Войди или Зарегистрируйся)
 
А причем здесь URI по приведенным ссылкам речь про User-Agent, а правилами проверяете Referer который роботы как раз оставляют пустым.
 
действительно, путаница вышла. может у тебя есть грамотный пример?
 
На вид в старт посте правила вполне нормальные. Поисковых роботов блочить не должно т.к. они реферер не заполняют и для них проверка закончится еще на правиле RewriteCond %{HTTP_REFERER} !^$
 
Упоминание google и yandex там необходимо. RewriteCond %{HTTP_REFERER} !^$ проверяет что строка не является пустой.
RewriteCond %{HTTP_REFERER} !^https?://(.*)?(mysіte\.com|google(.*)|yandex(.*))/.*$ [NC]
Если в реферере нет доменов mysіte.com, google или yandex то исполняется действие в RewriteRule и сервер отдает 403 ошибку.
 
Назад
Сверху