У меня появилась очень полезная для некоторых вебмастеров информация о
.htaccess... Речь идет о том, чтобы ограничить использование картинок с вашего
сервера нехорошими людьми. Зачем это надо? А надо это потому, что некоторые
хостинги требуют оплаты за трафик.
Представьте себе ситуацию, когда один
добрый, хороший и приятный во всех отношениях человек разместил на своем сайте
коллекцию картинок - кадров из какого-нибудь популярного фильма. Картинки
пользуются большой популярностью, народ активно смотрит их. Это, естественно,
выливается в неплохой исходящий трафик с сервера. Для примера - этот сайт
порождает трафика примерно на 5-6 Гб в месяц, и это при почти полном отсутствии
картинок! Сайт же, ориентированный на картинки (ну не надо меня обвинять в
поддержке xxx сайтов...), способен порождать трафик сотнями Гб. в месяц. И за
все это надо платить (например, по 2.5 доллара за 1 Гб).
И вдруг этот
чудесный, замечательный альтруист замечает, что трафик увеличился вдвое, при той
же посещаемости. Следовательно, платить надо в два раза больше! Почему?
Оказывается, какой-то крайне нехороший человек тоже сделал сайт с теми же
картинками. Но, поскольку такие картинки в сети уже есть, нехороший человек
решил заодно не тратить свой трафик и использовать картинки с хоста хорошего
человека. И правда, тег img вовсе не запрещает использование картинок с других
хостов, знай пиши полный путь. И радуется нехороший человек! Напакостил и
счастлив.
Что же делать хорошему человеку? Закрывать сайт? Нет! Великий
защитник человечества - .htaccess - приходит на помощь! Можно, оказывается,
сделать так, чтобы картинки можно было использовать только тому хосту, на
котором они находятся. И сделать это можно даже несколькими способами - либо
через функции apache, либо через mod_rewrite (модуль apache, занимающийся
перенаправлением на другие страницы).
Сначала посмотрим, как это можно
сделать через mod_rewrite. Для этого надо определить, откуда пришел посетитель -
если со своих страниц, то пустить его к картинке. Иначе - послать далеко и
надолго, а лучше всего на спонсора :) Делается это через переменную
http_referer. Вот это надо приписать в .htaccess:
authuserfile
/dev/null
authgroupfile /dev/null
rewriteengine on
rewritecond
%{http_referer} !^http://www.webhowto.ru/
rewritecond %{http_referer}
!^http://webhowto.ru/
rewritecond %{http_referer}
!>http://www.webhowto.ru:80 [nc]
rewritecond %{http_referer}
!>http://webhowto.ru:80 [nc]
rewriterule /*
http://www.yoursponsor.com/click.cgi [r,l]
А теперь представьте себе, как
работает mod_rewrite. Вся проблема в том, что обработка запроса сервером
происходит в несколько этапов. Вкратце: сначала apache обрабатывает url, а затем
ставит им в соответствие файлы. Беда в том, что обработка .htaccess происходит
уже после обработки url, поэтому чтобы обработать инструкции mod_rewrite
корректно, apache делает два раза одно и то же. Естественно, это сильно тормозит
сервер.
Есть более удобное решение. В httpd.conf в секцию, относящуюся к
папке, либо в .htaccess можно добавить инструкции серверу не отдавать картинки
незнакомым клиентам. Это делается так:
setenvifnocase referer
"^http://www.webhowto.ru" local_ref=1
<FILESMATCH ?.(gif|jpg)?>
order
allow,deny
allow from env=local_ref
</FILESMATCH>
Ура! Работает! В
смысле, не работает! :)
Остается добавить, что вы вполне можете точно так
же сделать защиту не только для jpg и gif, но и для любых других файлов, см.
документацию по apache на предмет синтаксиса бокса filesmatch. Вот и все, на
сэкономленные деньги купите себе халвы и наслаждайтесь!