.htaccess

Si bien la mayor parte de las veces, el spider que ingresa a un website para navegar las páginas pertenece a un buscador, la realidad es que no faltan robots maliciosos que se dediquen a descargar indiscriminadamente contenido y ha recopilar información de modo clandestino.
Normalmente, el uso del archivo “robots.txt” es inútil, porque directamente es salteado, por lo que “.htaccess” constituye la única barrera para detenerlos. Una manera bastante común es forzar el error 403 ante su intento. El siguiente código encierra algunos de los bots malignos más conocidos:
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} ^BlackWidow [OR]
RewriteCond %{HTTP_USER_AGENT} ^Bot\ mailto:craftbot@yahoo.com [OR]
RewriteCond %{HTTP_USER_AGENT} ^ChinaClaw [OR]
RewriteCond %{HTTP_USER_AGENT} ^Custo [OR]
RewriteCond %{HTTP_USER_AGENT} ^DISCo [OR]
RewriteCond %{HTTP_USER_AGENT} ^Download\ Demon [OR]
RewriteCond %{HTTP_USER_AGENT} ^eCatch [OR]
RewriteCond %{HTTP_USER_AGENT} ^EirGrabber [OR]
RewriteCond %{HTTP_USER_AGENT} ^EmailSiphon [OR]
RewriteCond %{HTTP_USER_AGENT} ^EmailWolf [OR]
RewriteCond %{HTTP_USER_AGENT} ^Express\ WebPictures [OR]
RewriteCond %{HTTP_USER_AGENT} ^ExtractorPro [OR]
RewriteCond %{HTTP_USER_AGENT} ^EyeNetIE [OR]
RewriteCond %{HTTP_USER_AGENT} ^FlashGet [OR]
RewriteCond %{HTTP_USER_AGENT} ^GetRight [OR]
RewriteCond %{HTTP_USER_AGENT} ^GetWeb! [OR]
RewriteCond %{HTTP_USER_AGENT} ^Go!Zilla [OR]
RewriteCond %{HTTP_USER_AGENT} ^Go-Ahead-Got-It [OR]
RewriteCond %{HTTP_USER_AGENT} ^GrabNet [OR]
RewriteCond %{HTTP_USER_AGENT} ^Grafula [OR]
RewriteCond %{HTTP_USER_AGENT} ^HMView [OR]
RewriteCond %{HTTP_USER_AGENT} HTTrack [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Image\ Stripper [OR]
RewriteCond %{HTTP_USER_AGENT} ^Image\ Sucker [OR]
RewriteCond %{HTTP_USER_AGENT} Indy\ Library [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^InterGET [OR]
RewriteCond %{HTTP_USER_AGENT} ^Internet\ Ninja [OR]
RewriteCond %{HTTP_USER_AGENT} ^JetCar [OR]
RewriteCond %{HTTP_USER_AGENT} ^JOC\ Web\ Spider [OR]
RewriteCond %{HTTP_USER_AGENT} ^larbin [OR]
RewriteCond %{HTTP_USER_AGENT} ^LeechFTP [OR]
RewriteCond %{HTTP_USER_AGENT} ^Mass\ Downloader [OR]
RewriteCond %{HTTP_USER_AGENT} ^MIDown\ tool [OR]
RewriteCond %{HTTP_USER_AGENT} ^Mister\ PiX [OR]
RewriteCond %{HTTP_USER_AGENT} ^Navroad [OR]
RewriteCond %{HTTP_USER_AGENT} ^NearSite [OR]
RewriteCond %{HTTP_USER_AGENT} ^NetAnts [OR]
RewriteCond %{HTTP_USER_AGENT} ^NetSpider [OR]
RewriteCond %{HTTP_USER_AGENT} ^Net\ Vampire [OR]
RewriteCond %{HTTP_USER_AGENT} ^NetZIP [OR]
RewriteCond %{HTTP_USER_AGENT} ^Octopus [OR]
RewriteCond %{HTTP_USER_AGENT} ^Offline\ Explorer [OR]
RewriteCond %{HTTP_USER_AGENT} ^Offline\ Navigator [OR]
RewriteCond %{HTTP_USER_AGENT} ^PageGrabber [OR]
RewriteCond %{HTTP_USER_AGENT} ^Papa\ Foto [OR]
RewriteCond %{HTTP_USER_AGENT} ^pavuk [OR]
RewriteCond %{HTTP_USER_AGENT} ^pcBrowser [OR]
RewriteCond %{HTTP_USER_AGENT} ^RealDownload [OR]
RewriteCond %{HTTP_USER_AGENT} ^ReGet [OR]
RewriteCond %{HTTP_USER_AGENT} ^SiteSnagger [OR]
RewriteCond %{HTTP_USER_AGENT} ^SmartDownload [OR]
RewriteCond %{HTTP_USER_AGENT} ^SuperBot [OR]
RewriteCond %{HTTP_USER_AGENT} ^SuperHTTP [OR]
RewriteCond %{HTTP_USER_AGENT} ^Surfbot [OR]
RewriteCond %{HTTP_USER_AGENT} ^tAkeOut [OR]
RewriteCond %{HTTP_USER_AGENT} ^Teleport\ Pro [OR]
RewriteCond %{HTTP_USER_AGENT} ^VoidEYE [OR]
RewriteCond %{HTTP_USER_AGENT} ^Web\ Image\ Collector [OR]
RewriteCond %{HTTP_USER_AGENT} ^Web\ Sucker [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebAuto [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebCopier [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebFetch [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebGo\ IS [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebLeacher [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebReaper [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebSauger [OR]
RewriteCond %{HTTP_USER_AGENT} ^Website\ eXtractor [OR]
RewriteCond %{HTTP_USER_AGENT} ^Website\ Quester [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebStripper [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebWhacker [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebZIP [OR]
RewriteCond %{HTTP_USER_AGENT} ^Wget [OR]
RewriteCond %{HTTP_USER_AGENT} ^Widow [OR]
RewriteCond %{HTTP_USER_AGENT} ^WWWOFFLE [OR]
RewriteCond %{HTTP_USER_AGENT} ^Xaldon\ WebSpider [OR]
RewriteCond %{HTTP_USER_AGENT} ^Zeus
RewriteRule .* - [F]
Lista extraída de: http://www.enespanol.com.ar/2006/04/03/tutorial-de-htaccess/#7

Aunque a simple vista pueda parecer bastante sencillo de utilizar, un archivo “.htaccess” guarda grandes posibilidades. Por lo tanto, resulta lógico que de su uso puedan desprenderse algunas situaciones colaterales conflictivas. Los dejamos con algunos consejos básicos a seguir en la estructuración de este interesantísimo fichero.
El primero de ellos, común también al campo de la programación, es mantener su código ordenado. Utilizar comentarios comenzando con “#” que describan situaciones especiales u observaciones, es fundamental para entender lo escrito durante una revisión o en la medida que aumenta su complejidad.
Otro punto muy importante es el tamaño del “.htaccess”. No debe pasarse por alto el hecho de que un servidor procesa estas líneas ante cada petición, por lo que este factor condicionará notablemente la velocidad de respuesta a un usuario que se encuentra navegando el sitio web.
Finalmente, también es un deber tomar en cuenta el sistema de herencia que utiliza este archivos. Dentro de las posibilidades de configuración, es posible aplicar un “.htaccess” por directorio, caso en el que serán reemplazadas con estas reglas las que haya implementado el archivo perteneciente al directorio raíz. Si se desean crear reglas generales, debe tenerse cuidado en no “pisar” estas directivas globales con directivas locales.

En el anterior artículo, comentamos un poco la definición más básica del archivo “.htaccess” y una de sus posibilidades más conocidas, la restricción de acceso web a un directorio y/o fichero, combinada también con el permiso a IPs determinadas. Esta vez trataremos un poco sobre otro caso bastante común: la personalización del “Error 404”.
Se denomina de esa forma al error que devuelve un servidor cuando se intenta acceder a una página que ya no está en la dirección que se requiere o que directamente no existe. Es posible dejar el mensaje por defecto, pero si queremos mostrar una estructura más profesional, es buena idea crear un mensaje personalizado que mantenga el aspecto del web y permita volver atrás con un simple botón.
Para redireccionar cualquier “Error 404” a una página personalizada, basta con abrir el archivo “.htaccess” (o crearlo en caso de que no exista ya) y escribir lo siguiente:
ErrorDocument 404 /directorioEjemplo/error404.html
Obviamente, habrá que cambiar nombres de acuerdo a como le hayamos programado. Esto resulta interesante, porque además, bastará con cambiar el número “404” por cualquiera para redireccionar otros errores.
Es importante el peso de la página personalizada, porque en algunas versiones de Internet Explorer toda página de 404 menor a los 512 bytes es redireccionada hacia su buscador propio, perdiéndose la visita.

Se llama “.htaccess” (acrónimo de “hyper-text access”) al archivo que se ocupa de manejar la configuración de acceso a directorios/ficheros en los servidores HTTP Apache. Su principal utilidad es darle al webmaster la posibilidad de regular las directivas de seguridad desde un setup maestro que restringe o permite determinados archivos.
Su programación requiere de un trabajo cuidadoso, ya que el otorgamiento/denegación de permisos puede tener implicancias muy importantes. En esta serie de artículos, nos ocuparemos de tratar algunas situaciones bastante habituales cuando se piensa en la modificación de este archivo.
Una de ellas es la restricción de acceso a una carpeta o directorio, muy útil para mantener fuera de vista ficheros que consideremos particularmente importantes para el funcionamiento del site. Para llevar adelante esta práctica, basta con crear un archivo “.htaccess” dentro de la carpeta a la cual queremos aplicar las directivas.
Para denegar los accesos por completo, escribiremos el siguiente código:
#deny all access
deny from all
Puede pasar que, por razones particulares, necesitemos que una IP en particular pueda acceder, por lo que agregaremos la siguiente línea:
allow from xxx.xxx.xxx.xxx (donde “xxx.xxx.xxx.xxx” los números que correspondan)
Podemos ir aún más lejos, limitando un rango específico de IP:
allow from xxx.xxx.xxx.xxx/24
Y finalmente, en lugar de bloquear un directorio, hacerlo con un fichero en particular:
<Files archivo.php>
Order allow,deny
Deny from all
