Hace ya unos cuantos días dos blogs del lejano oriente (uno de china y otro de allí cerca) me andaban robando ancho de banda no con una, ni dos sino con 22 imágenes alojadas en el servidor. En otras palabras, estos dos blogs hacen hotlinking. Y eso no es legal. Asi que hoy buscando una solución entre mis marcadores, llegué a un artículo [en ingles] en los foros de Joomla! que explica de manera sencilla como combatir el hotlinking usando el .htaccess, el cual voy a traducir de manera libre:
¿Cómo bloqueo el hotlinking en mis imágenes utilizando .htaccess?
1. Crea una imagen jpeg llamada no_hot_link.jpe. Nota que la extensión es .jpe , esto es intencional y muy importante. Una vez creada ponla en tu carpeta de imágenes.
2. Abre el .htaccess y escribe estas líneas de código:
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://(.+.)?tu_sitio.com/ [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteRule .*.(jpe?g|gif|bmp|png)$ /imagenes/no_hot_link.jpe [L]
De esta forma cuando haya una peticion externa de una imágen jpg/jpeg/gif/bmp/png alojada en tu sitio, se mostrará el sustituto no_hot_link.jpe.
Blockear el hotlinking de dominios específicos
De la manera anterior bloqueamos las imágenes de cualquier sitio externo, aunque podemos hacerlo para dominios específicos:
RewriteEngine On
RewriteCond %{HTTP_REFERER} ^http://(.+.)?blogspot.com/ [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://(.+.)?myspace.com/ [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://(.+.)?livejournal.com/ [NC]
RewriteRule .*.(jpe?g|gif|bmp|png)$ /images/no_hot_link.jpe [L]
Asi hacemos que otros sitios alojados en blogspot, myspace o livejournal no puedan robarnos ancho de banda. La cantidad de dominios es ilimitada, sin embargo el último no debe poseer la bandera la condición OR.
Mostrar Error 403 [Forbidden] en vez de una imagen:
Tan solo debemos cambiar la última línea por:
RewriteRule .*.(jpe?g|gif|bmp|png)$ – [F]
Finalmente algunos se preguntaran porque es importante que la imagen sustituta sea .jpe . A pesar que en el artículo no lo explica, es cuestión de lógica. Estamos estableciendo que no se pueden mostrar imágenes con cierto formato en otro sitio. Si hacemos eso, por lo tanto, no podremos mostrar una imagen sustituta con los formatos jpg/jpeg/gif/bmp/png , es por eso que se busca otro formato de imagen para mostrar [jpe].