Имате леп сајт, пун је сличица, не правите питање што ваше фотографије и илустрације људи користе и на другим сајтовима и све је наизглед лепо, сјајно и ружичасто, али се појављује проблем – ваш сајт троши све више и више ресурса.
Разлог је обично у томе што други сајтови уместо да код себе ископирају илустрацију коју желе да користе, ставе директан линк на слику која се налази на вашем сајту. Тако сваки њихов посетилац иако гледа њихове стране, слике учитава са вашег сајта и, практично, ви све то плаћате.
Ако се погоди да неко вашу слику постави на какав веома посећен сајт, форум или портал, јао вама. Такав сајт за неколико сати може да вам потроши све ресурсе. Ако сте некада наишли на поруку „Bandwidth exceeded.“ то је то. Ресурси нису неограничени, а обично их имате онолико колико сте платили. Када сајт потроши ресурсе, постаје недоступан. А то не желите.
Ако се одлучите да тражите ко све користи ваше слике и троши вам проток, потрошићете много времена, а нећете много постићи. Чак и да нахватате све, тешко ћете их убедити да уклоне проблематичне линкове. Зато остаје други начин: онемогућите приказ слика на другим сајтовима (hotlink protection).
Како заштити сајт
Заштита се изводи релативно једноставно коришћењем .htaccess датотеке (писао сам већ о њеној употреби, видите сличне чланке). Све то је потребно, то је да се за све случајаве када се слика користи са неког сајта који није на листи дозвољених, уместо ње прикаже наменска сличица која обавештава да такво коришћење слике није дозвољено.
У .htaccess датотеку треба убацити следеће команде:
RewriteEngine On RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !http://www.mojsajt.com RewriteCond %{HTTP_REFERER} !http://www.nekidrugisajt.com RewriteCond %{HTTP_REFERER} !http://www.trecisajt.com RewriteRule (wp-content/uploads.*\.(gif|jpg|jpeg|png)$) http://www.mojsajt.com/hotlinking.png [L]

Осим прве команде RewriteCond, остале указују на сајтове за које треба дозволити приказивање слика. Команда RewriteRule за све сајтове осим одобрених преусмерава приказ gif, jpg, jpeg и png слика на наменску сличицу са обавештењем да такво линковање није дозвољено (hotlinking.png). Сличица треба да буде што мања, јер се она приказује на свим сајтовима који некоректно линкују, тако да се и даље троше ваши ресурси. Што је сличица краћа, то је и потрошња мања. Немојте у њу стављати много графичких ефеката и боја – нека буде што једноставнија.
Овај пример одговара WordPress блогу, али се на сличан начин може урадити заштита и било којег другог сајта.
Коришћење овакве заштите има и својих мана. Пре свега, ограничавате приказ сличица на свим сајтовима тако да ће то погодити и људе који то раде са добром намером. Добро је да унапред направите списак сајтова којима ћете дозволити да директно користе слике. Ако је блог у питању, то значи да треба дозволити приказ слика блог агрегаторима као што су на пример Блогодак, Планетод и слични.
Обрнута логика
Ако желите да избегнете проблеме који су последице забране свима да приказују фотографије директним линковима са вашег сајта, а ипак желите да неке сајтове онемогућите у томе, онда је потребно мало изменити логику команди и добијате урпаво то. Свима је дозвољено да приказују фотографије, осим оним сајтовима које наведете.
То је добро јер тако можете да реагујете ако се прави неки сајт који је веома посећен и који вам црпи ресурсе много више него што је то прихватљиво, а опет, остали сајтови где се појави ваша сличица, а који не представљају велико оптерећење, неће имати проблема.
Измењена правила изгледају овако:
RewriteEngine On RewriteCond %{HTTP_REFERER} www.zabranjensajt1.com RewriteCond %{HTTP_REFERER} www.zabranjensajt2.com RewriteCond %{HTTP_REFERER} www.zabranjensajt3.com RewriteCond %{HTTP_REFERER} www.zabranjensajt4.com RewriteRule (wp-content/uploads.*\.(gif|jpg|jpeg|png)$) http://www.mojsajt.com/hotlinking.png [L]
Дакле RewriteCond командама наводите сајтове којима није дозвољено да линкују слике. Приметите да је разлика у томе што сада стринг у услову нема знак „!“ испред.
Јесте да није ништа ново и непознато, али може да користи почетницима који се нису сретали са овим проблемом (што је мени правио Bad bunny из записа о црву за OpenOffice.org који је постављен на МајСпејс, па то је чудо једно. Но, брзо сам решио проблем баш на овај начин :)
Ovaj hotlinking nije loša stvar, ali onda gubi poentu čitanje bloga iz recimo http://www.google.com/reader …
Slike se ne prikazuju u Google Reader-u, pošto si zabranio hotlinking.
Da nisi malo preterao sa ovim restrikcijama:
http://yfrog.com/13screenshothkp
??!
Требало је да ми пошаљеш тачну путању стране на којој се ово приказује да убацим изузетак како би се слике виделе.
Види ли се сада?
Da.
ovako, malo sam skrtario i sa velicinom slike
Radi se o Google Readeru, ali vidim da je sada ok…
Eto jos jedne stavke na o kojoj treba voditi racuna.
Зато сам у чланку показао да се хотлинковање може решавати и тако што се подразумевано свима дозвољава линковање а блокирају се појединачни сајтови који то злоупотребљавају.
Ја сам се одлучио да све блокриам а дозвољавам пробранима, зато што ми блог почиње да правиозбиљан проблем – ових дана ће прећи 15 Гб протока од почетка месеца. Заиста много ресурса троши а један од озбиљнијих проблема је урпаво хотлинкинг, јер имам доста фотографија.
На једном сајту који администрирам се појавио сличан проблем а сајт у ствари није обиман али садржи неке интересантне ПДФ документе (легалне). Невероатан је број конекција за преузимање тих докумената али је интересантно да велики број преузимања потиче са једног те истог ИП (једана исти документ са једног те истог ИП је преузет и десетинама ако не и стотинама пута), а при том уопште нема референце у конекцији, дакле ради се о директном преузимању, вероватно помоћу неког даунлоуд менаџера, пошто не могу да замислим да је неко толико пута поновио преузимање ручно из веб читача.
Pedja, ovo kod mene ne radi, sve sam probao kombinacije i kad odem na sajt koji koristi moju sliku ona i dalje stoji tamo?
Подешавање .htaccess може да се разликује од сервера до сервера. Нађи неког ко је упућен у то како ј еподешен твој сервер да ти то намести.