El bloqueo de usuarios o sitios que se originan de un dominio en particular es otro truco útil que permite emplear el .htaccess. Supongamos que revisamos nuestros logs un día y vemos que hay toneladas de visitas y referencias de un sitio en particular en el cual después de una inspección encontramos que no hay un solo enlace hacia el nuestro que sea visible. Esto significa que la referencia no es legítima lo cual significa que probablemente está haciendo hot linking a ciertos archivos en nuestro sitio como por ejemplo imágenes, archivos .css o archivos que ni siquiera sabemos que son. Hay que recordar que los registros generan y nos muestran una entrada por cualquier tipo de referencia a nuestro sitio que tenga un origen rastreable.

Antes de mostrar el código en sí, es importante anotar que al bloquear el acceso a un referente en el .htaccess requiere el uso del módulo mod rewrite de Apache para distinguir el referente. Este módulo está instalado por defecto en la mayoría de los servidores. Por lo tanto, para denegar todo tráfico que se origina de un dominio en particular hacia nuestro dominio podemos emplear el siguiente código:

Bloqueo de acceso de un solo sitio

RewriteEngine on
# Options +FollowSymlinks
RewriteCond %{HTTP_REFERER} badsite\.com [NC]
RewriteRule .* - [F]

 

Bloqueo de acceso de varios sitios

RewriteEngine on
# Options +FollowSymlinks
RewriteCond %{HTTP_REFERER} badsite\.com [NC,OR]
RewriteCond %{HTTP_REFERER} anotherbadsite\.com
RewriteRule .* - [F]

 
 

En el primer caso, «badsite\.com» es el dominios que deseamos bloquear. Es importante notar que el simbolo «\» debe proceder al punto («.») precisamente para que el punto sea leído por el sistema como tal. La razón de esto es que estamos usando lenguaje UNIX por lo cual se trata de la sintaxis apropiada que debe emplearse al escribir esta serie de instrucciones. El «[NC]» es añadido al final del dominios para que sea insensible a las mayúsculas y minúsculas, de tal modo que si el dominio es «badsite.com», «Badsite.com» o de cualquier otra combinación de mayúsculas y minúsculas, siempre va a ser bloqueado.

Finalmente, la última línea en el archivo .htaccess especifica que la acción a llevar a cabo cuando se encuentra una coincidencia, es decir el sitio que se quiere bloquear, es producir el fallo de la solicitud, lo que significa que el referente de tráfico va a encontrar un error 403 Forbidden. La única diferencia entre bloquear un solo sitio y varios sitios es el [NC, OR] mostrado en el siguiente código, el cual se añade para todos los sitios excepto para el último.

Ahora, probablemente han notado la línea «Options +FollowSymlinks», la cual está comentada. El comentario en esta línea debe ser eliminado si el servidor no está configurado con FollowSymlinks en su sección <directory> en el httpd.conf y se produce un 500 Internal Server cuando se utiliza el código anterior tal como está.