У меня появилась очень полезная
для некоторых вебмастеров
информация о .htaccess... Речь
идет о том, чтобы ограничить
использование картинок с вашего
сервера нехорошими людьми. Зачем
это надо? А надо это потому, что
некоторые хостинги требуют
оплаты за трафик.
Представьте себе ситуацию, когда
один добрый, хороший и приятный
во всех отношениях человек
разместил на своем сайте
коллекцию картинок — кадров из
какого-нибудь популярного
фильма. Картинки пользуются
большой популярностью, народ
активно смотрит их. Это,
естественно, выливается в
неплохой исходящий трафик с
сервера. Для примера — этот сайт
порождает трафика примерно на
5-6 Гб в месяц, и это при почти
полном отсутствии картинок! Сайт
же, ориентированный на картинки
(ну не надо меня обвинять в
поддержке XXX сайтов...),
способен порождать трафик
сотнями Гб. в месяц. И за все
это надо платить (например, по
2.5 доллара за 1 Гб).
И вдруг этот чудесный,
замечательный альтруист
замечает, что трафик увеличился
вдвое, при той же посещаемости.
Следовательно, платить надо в
два раза больше! Почему?
Оказывается, какой-то крайне
нехороший человек тоже сделал
сайт с теми же картинками. Но,
поскольку такие картинки в сети
уже есть, нехороший человек
решил заодно не тратить свой
трафик и использовать картинки с
хоста хорошего человека. И
правда, тег img вовсе не
запрещает использование картинок
с других хостов, знай пиши
полный путь. И радуется
нехороший человек! Напакостил и
счастлив.
Что же делать хорошему человеку?
Закрывать сайт? Нет! Великий
защитник человечества — .htaccess
— приходит на помощь! Можно,
оказывается, сделать так, чтобы
картинки можно было использовать
только тому хосту, на котором
они находятся. И сделать это
можно даже несколькими способами
— либо через функции Apache,
либо через mod_rewrite (модуль
Apache, занимающийся
перенаправлением на другие
страницы).
Сначала посмотрим, как это можно
сделать через mod_rewrite. Для
этого надо определить, откуда
пришел посетитель — если со
своих страниц, то пустить его к
картинке. Иначе — послать далеко
и надолго, а лучше всего на
спонсора :) Делается это через
переменную HTTP_REFERER. Вот это
надо приписать в .htaccess
(решение проблемы с помощью
mod_rewrite взято с сайта
Master-X):
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
Order Allow,Deny
Allow from env=local_ref
Ура! Работает! В смысле, не
работает! :)
Остается добавить, что вы вполне
можете точно так же сделать
защиту не только для jpg и gif,
но и для любых других файлов,
см. документацию по Apache на
предмет синтаксиса бокса
FilesMatch. Вот и все, на
сэкономленные деньги купите себе
халвы и наслаждайтесь!