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

Тема в разделе "Mod Rewrite / htaccess / ЧПУ", создана пользователем Fader, 24 ноя 2014.

  1. Fader

    Fader Создатель

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

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

    RewriteCond %{HTTP_REFERER} !^$
    RewriteCond %{HTTP_REFERER} !^https?://(.*)?(mysіte\.com|google(.*)|yandex(.*))/.*$ [NC]
    RewriteRule \.(jpg|jpeg|png|bmp|gif)$ - [NC,F,L]
     
  2. Glueon

    Glueon Создатель

    Регистр.:
    21 ноя 2014
    Сообщения:
    15
    Симпатии:
    5
    От парсеров это не защитит, так как много ума подставить нужный реферер не нужно. Лучше всего кодировать картинки в base64, когда их выводите:
    Код:
    <?php
    $imagedata = file_get_contents("/path/to/image.png");
    $base64 = base64_encode($imagedata);
    ?>
    <img src="data:image/jpeg;base64,<?= $base64; ?>" />
     
  3. Fader

    Fader Создатель

    Регистр.:
    7 май 2008
    Сообщения:
    49
    Симпатии:
    5
    спасибо конечно, но пока такая задача не стоит.
     
  4. efs

    efs SEO оптимизатор дискрипторов одностраничных сайтов

    Moderator
    Регистр.:
    20 ноя 2009
    Сообщения:
    825
    Симпатии:
    475
    тс это и не просит, он от хотлинка (когда картинку вставляют на другом сайте. место на диске и трафик гоняется с его сервера, а выгоду (может быть) получает кто-то другой) закрыться хочет.
     
    mo.Lex и Glueon нравится это.
  5. Fader

    Fader Создатель

    Регистр.:
    7 май 2008
    Сообщения:
    49
    Симпатии:
    5
    вообще если разобрать правила касающиеся непосредственно юзерагентов яндекса и гугла то что касается Яндекса - все его юзерагенты содержат http://yandex.* (пруф)
    А вот с Гуглом не все так однозначно. "Googlebot-Image" не содержит URI (пруф)
     
  6. lag

    lag

    Регистр.:
    13 окт 2014
    Сообщения:
    188
    Симпатии:
    227
    А причем здесь URI по приведенным ссылкам речь про User-Agent, а правилами проверяете Referer который роботы как раз оставляют пустым.
     
  7. Fader

    Fader Создатель

    Регистр.:
    7 май 2008
    Сообщения:
    49
    Симпатии:
    5
    действительно, путаница вышла. может у тебя есть грамотный пример?
     
  8. lag

    lag

    Регистр.:
    13 окт 2014
    Сообщения:
    188
    Симпатии:
    227
    На вид в старт посте правила вполне нормальные. Поисковых роботов блочить не должно т.к. они реферер не заполняют и для них проверка закончится еще на правиле RewriteCond %{HTTP_REFERER} !^$
     
  9. Fader

    Fader Создатель

    Регистр.:
    7 май 2008
    Сообщения:
    49
    Симпатии:
    5
    тогда получается во второй строчке упоминание google и yandex вообще ни к чему?
     
  10. lag

    lag

    Регистр.:
    13 окт 2014
    Сообщения:
    188
    Симпатии:
    227
    Упоминание google и yandex там необходимо. RewriteCond %{HTTP_REFERER} !^$ проверяет что строка не является пустой.
    RewriteCond %{HTTP_REFERER} !^https?://(.*)?(mysіte\.com|google(.*)|yandex(.*))/.*$ [NC]
    Если в реферере нет доменов mysіte.com, google или yandex то исполняется действие в RewriteRule и сервер отдает 403 ошибку.
     
    mo.Lex нравится это.