Más de 20 trucos que todo administrador de Apache debería saber sobre .htaccess

El fichero de configuración de Apache .htaccess es mucho más potente de lo muchos podemos pensar. Haciendo un uso apropiado del mismo, nos podemos quitar mucho trabajo de programación intentando conseguir algo que este fichero puede hacer por nosotros. A continuación os dejo algunos de los trucos que me han parecido más interesantes que he visto en esta entrada.

Evitar el hotlinking

Options +FollowSymlinks
#Protect against hotlinking
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www.)?domainname.com/ [nc]
RewriteRule .*.(gif|jpg|png)$ http://domainname.com/img/stop_stealin

Bloquear peticiones por Agentes de Ususario (User-agents)

#Block bad bots
SetEnvIfNoCase user-Agent ^FrontPage [NC,OR]
SetEnvIfNoCase user-Agent ^Java.* [NC,OR]
SetEnvIfNoCase user-Agent ^Microsoft.URL [NC,OR]
SetEnvIfNoCase user-Agent ^MSFrontPage [NC,OR]
SetEnvIfNoCase user-Agent ^Offline.Explorer [NC,OR]
SetEnvIfNoCase user-Agent ^[Ww]eb[Bb]andit [NC,OR]
SetEnvIfNoCase user-Agent ^Zeus [NC]

Order Allow,Deny
Allow from all
Deny from env=bad_bot

Redireccionamientos (301), para no ser penalizado por motores de búsqueda como Google.

Redirect 301 /d/file.html http://www.domainname.com/r/file.html

Personalizar páginas de error.

ErrorDocument 401 /error/401.php
ErrorDocument 403 /error/403.php
ErrorDocument 404 /error/404.php
ErrorDocument 500 /error/500.php

Bloquear una lista de IPs

allow from all
deny from 145.186.14.122
deny from 124.15

Proteger un fichero específico de ser accedido.

#Protect the .htaccess File

order allow,deny
deny from all

Proteger por contraseña ficheros y directorios

#password-protect a file

AuthType Basic
AuthName "Prompt"
AuthUserFile /home/path/.htpasswd
Require valid-user

# password-protect a directory
resides
AuthType basic
AuthName "This directory is protected"
AuthUserFile /home/path/.htpasswd
AuthGroupFile /dev/null
Require valid-user

Deshabilitar la navegación por los directorios.

Options All -Indexes

Remover / cambiar la extensión de las paginas.

RewriteRule ^(([^/]+/)*[^.]+)$ /$1.php [L]

Para ver el resto puedes ir al post original.

También existen herramientas que te auto-generan este fichero a partir de las opciones seleccionadas y que en su día ya hablamos aquí en Cyberhades.

Actualización: aquí os dejo este link muy completo sobre .htaccess, que Newlog nos dejó en los comentarios.