Frenando el HotLinking en WP
Este blog es fiel usuario del plugin WP-Stats de Lester Chan. Las últimas dos versiones del mismo vienen con una opción interesante que es la de mostrarte tanto la [url] como el [referral] del visitante en cuestión. Prestándole la atención suficiente a esos datos y siguiendo las direcciones, me di cuenta de que realmente estaba perdiendo MUCHO ancho de banda debido a que la gente está posteando en sus blogs, foros o sitios las imágenes que yo tengo posteadas en mi blog. Hace un tiempito estuve leyendo para ver cómo cornos parar ésto y está funcionando MUY bien. Si les interesa, pueden seguir leyendo.
La cosa viene MUY pero MUY simple. Toma menos de 5 minutos parar el robo de ancho de banda si tenés un blog que manejás con WordPress. Lo que hay que hacer es agregarle un par de líneas al archivo .htaccess del blog, líneas similares a éstas:
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?misitio\.com/ [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteRule .*\.(jpe?g|gif|bmp|png)$ /imagenes/nomelinkees.jpe [L]
Una explicación básica: la primera línea le indica al servidor que tiene que hacer una re-escritura. La segunda línea le dice al servidor que le permita mostrar imágenes en cualquier dirección que coincida con "misitio.com". La tercera línea permite un referer vacío. La última línea le dice al servidor que cualquier dirección que coincida con archivos que posean la extensión jpeg, jpg, gif, bmp, o png y los redirija al archivo "nomelinkees.jpe" que está en el directorio de imágenes.
Ahora, veamos un segundo ejemplo:
RewriteEngine On
RewriteCond %{HTTP_REFERER} ^http://(.+\.)?myspace\.com/ [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://(.+\.)?blogspot\.com/ [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://(.+\.)?livejournal\.com/ [NC]
RewriteRule .*\.(jpe?g|gif|bmp|png)$ /imagenes/nomelinkees.jpe [L]
Un código como el anterior te permite evitar el HotLinking desde dominios específicos, como myspace.com, blogspot.com y livejournal.com; pero permite que cualquier otro dominio si pueda hacerlo.
Por supuesto que podés hacer una lista interminable de dominios. Pero si hay que tener en cuenta que cada condición de reescritura termine en [NC,OR]; ya que NC le dice al servidor que ignore cambios de mayúsculas y minúsculas y OR le dice que hay otro dominio a continuación al que tampoco le debe permitir el linkeo. Sólo el último dominio de la lista debe omitir las siglas OR, ya que hay que avisarle al servidor mediante el código que ese es el último dominio de la lista.
Si en vez de mostrar una imagen, queremos enviar un aviso de error 403 (Forbidden), lo que podemos hacer es cambiar la última línea de los ejemplos anteriores por ésta:
RewriteRule .*\.(jpe?g|gif|bmp|png)$ - [F]
La cosa es bastante simple y rápida. Particularmente, yo estoy terminando mi código con ésta línea:
RewriteRule .*\.(gif|jpe?g|png|bmp)$ [F,NC]
No estoy usando una imagen que diga "No me linkees" (o con cualquier cosa creativa o no que podría habérseme ocurrido) porque a estas alturas son muchas las imágenes de mi blog que están siendo linkeadas diréctamente y por más pequeña que sea la imagen a utilizar, te sigue consumiendo el ancho de banda que te da tu host.
Con éstos códigos se puede hacer mucho más, incluso podés agregarle otras extensiones para evitar que te roben archivos (tipo .mp3, .wmv, .pdf o las extensiones de flash de videos). A lo que le tengo que dar más tiempo, porque realmente te deja hacer cosas muy bonitas es a éste tutorial de A List Apart, que no sólo combina código para el .htaccess, sino que te deja jugar un poquito más con php.
Y eso sería todo… si me excedí con la geekeada del post, blame it on Taly que es quien nos está contagiando :P ^_^
Posts Relacionados
Post Info
- Autor:
- Fer
- Publicada:
- Julio 7, 2007 @ 17:00
- Tags:
- .htaccess, A List Apart, Bandwidth, Hotlinking, Lester Chan, php, Plugins, WordPress, WP, WP-Stats
- Post Anterior:
- Five Thousand
- Post Siguiente:
- Reflex Nikon D40











5 Comentarios
Dejá un Comentario | Feed RSS de los Comentarios de este Post [?] | TrackBack URI [?]