La configuración del archivo .htaccess de Apache (hypertext access) puede ser una herramienta muy ponderosa en el desarrollo web si se utiliza de la forma adecuada.
Mediante .htaccess podremos realizar redirecciones, proteger archivos y directorios con contraseña, prevenir el hotlinking y el robo de ancho de banda, comprimir archivos y mucho, mucho más. Entérate cómo.
Asegúrate de hacer un backup de tu archivo .htaccess actual antes de aplicar cualquiera de estos hacks.
1. Prevenir el Hotlinking
¿Estás cansado de que la gente utilice tu ancho de banda poniendo las imágenes albergadas en tu servidor en su sitio web? Añade el siguiente código al final de tu archivo .htaccess para prevenir el hotlinking:
-
Options +FollowSymlinks
-
#Protect against hotlinking
-
RewriteEngine On
-
RewriteCond %{HTTP_REFERER} !^$
-
RewriteCond %{HTTP_REFERER} !^http://(www.)?nombrededominio.com/ [nc]
-
RewriteRule .*.(gif|jpg|png)$ http://nombrededominio.com/img/no_robar_ancho_de_banda.gif[nc]
2. Bloquea todas las peticiones del user-agent
Es posible bloquear a todos los user-agents indeseados que pueden ser potencialmente dañinos o quizá simplemente para mantener la carga del servidor lo más baja posible.
-
#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
3. Redirecciona a todos, excepto a ciertas IPs
Si por alguna razón deseas denegar el acceso a todos los usuarios o sólo permitir a un cierto grupo de direcciones IP para que tengan acceso a tu sitio, añade el siguiente código a tu archivo .htaccess:
-
ErrorDocument 403 http://www.nombrededominio.com
-
Order deny,allow
-
Deny from all
-
Allow from 124.34.48.165
-
Allow from 102.54.68.123
4. Redirecciones 301 amigables con SEO
Si has transferido nombres de dominio o deseas redireccionar a una página especÃfica sin que afecte a los resultados de los motores de búsqueda como Google, utiliza el siguiente código:
-
Redirect 301 /d/file.html http://www.nombrededominio.com/r/file.html
5. Crea una página personalizada para cada tipo de error
Si te cansaste del diseño por defecto de las páginas de error 401, 403, 404, 500, etc. puedes fácilmente crear la tuya propia y referirte hacÃa ella de esta forma:
-
ErrorDocument 401 /error/401.php
-
ErrorDocument 403 /error/403.php
-
ErrorDocument 404 /error/404.php
-
ErrorDocument 500 /error/500.php
6. Crea una lista de IPs prohibidas
¿Te cansaste de obtener siempre los mismos comentarios de ciertos usuarios una y otra vez? Simplemente prohÃbe el acceso a determinadas IPs, añadiendo el siguiente código:
-
allow from all
-
deny from 145.186.14.122
-
deny from 124.15
7. Setea una dirección de e-mail por defecto para el administrador de servidor
Con el siguiente código puedes especificar la dirección de correo electrónico por defecto para el administrador de servidor:
-
ServerSignature EMail
-
SetEnv SERVER_ADMIN default@dominio.com
8. Deshabilita la ventana de aviso de descarga
Usualmente al descargar algo de un sitio web, saltará una ventana que pregunta si deseas abrir el archivo o guardarlo en tu PC. Para prevenir esto, utiliza el siguiente código:
-
AddType application/octet-stream .pdf
-
AddType application/octet-stream .zip
-
AddType application/octet-stream .mov
9. Protege un archivo especÃfico
El código que sigue te permite denegar el acceso a cualquier archivo que desees, mostrando una página de error 403 cuando alguien intenta acceder al mismo:
-
#Protect the .htaccess File
-
-
order allow,deny
-
deny from all
10. Comprime componentes con mod_deflate
Como alternativa a la compresión de archivos mediante Gzip, puedes implementar mod_deflate (que se supone es más rápido). Coloca el siguiente código en la parte superior de tu archivo .htaccess:
-
SetOutputFilter DEFLATE
11. Agrega headers de expiración a los archivos
El siguiente código muestra cómo agregar fechas de expiración en las cabeceras de los archivos:
-
Header set Expires "Wed, 21 May 2010 20:00:00 GMT"
12. Seteando la página por defecto
Puedes hacer que la página a mostrar ni bien un usuario llegue a tu sitio no sea la archiconocida "index". Aquà seteamos "about.html" como página de inicio:
-
#Serve Alternate Default Index Page
-
DirectoryIndex about.html
13. Proteje tus archivos y directorios con una contraseña
-
#proteger un archivo con contraseña
-
-
AuthType Basic
-
AuthName "Prompt"
-
AuthUserFile /home/path/.htpasswd
-
Require valid-user
-
-
# proteger un directorio con contraseña
-
resides
-
AuthType basic
-
AuthName "This directory is protected"
-
AuthUserFile /home/path/.htpasswd
-
AuthGroupFile /dev/null
-
Require valid-user
14. Hacer una redirección 301 de un dominio viejo a uno nuevo
Incluyendo este snippet en el .htaccess de tu viejo dominio, conseguirás redigir a otro nuevo (sin ser penalizado por Google por duplicar contenido, dado que el 301 es un aviso de "redirección permanente"):
-
# Redirigir de un dominio viejo a uno nuevo
-
RewriteEngine On
-
RewriteRule ^(.*)$ http://www.nuevodominio.com/$1 [R=301,L]
15. Forzar el cacheo
El siguiente snippet no va a incrementar directamente la velocidad de carga de tu sitio en general, pero sà va a cargar más rápido cuando el mismo usuario vuelva a visitarlo al enviar un status 304 cuando se pidan elementos que no han sido modificados. Puedes cambiar la frecuencia de cacheo al cambiar el número de segundos (en este ejemplo se da una vez al dÃa):
-
FileETag MTime Size
-
ExpiresActive on
-
ExpiresDefault "access plus 86400 seconds"
16. Comprimir componentes al activar Gzip
Esto hace que sea más rápida la carga de tu sitio:
-
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/javascript text/css application/x-javascript
-
BrowserMatch ^Mozilla/4 gzip-only-text/html
-
BrowserMatch ^Mozilla/4.0[678] no-gzip
-
-
BrowserMatch bMSIE !no-gzip !gzip-only-text/html
17. Quitar palabras o strings de una URL
En este ejemplo, quitaremos "category" de nuestras URL, es decir: http://tudominio.com/category/blue -> http://tudominio.com/blue
Agrega este código al final de tu .htaccess:
-
RewriteRule ^category/(.+)$ http://www.tudominio.com/$1 [R=301,L]
18. Deshabilitar la navegación por los directorios de tu sitio
-
Options All -Indexes
19. Redirigir los Feeds de WordPress a FeedBurner
-
#Redirect wordpress content feeds to feedburner
-
-
RewriteEngine on
-
RewriteCond %{HTTP_USER_AGENT} !FeedBurner [NC]
-
RewriteCond %{HTTP_USER_AGENT} !FeedValidator [NC]
-
RewriteRule ^feed/?([_0-9a-z-]+)?/?$ http://feeds.feedburner.com/tufeed [R=302,NC,L]
20. Remover la extensión del archivo de una URL
Para que sea más amigable al usuario y a los buscadores, por ejemplo "http://www.tudominio.com/autos.html" -> "http://www.tudominio.com/autos"
-
RewriteRule ^(([^/]+/)*[^.]+)$ /$1.php [L]
21. Quitar el "www" del dominio
-
#remove www from URI
-
RewriteEngine On
-
RewriteCond %{HTTP_HOST} ^www\.dominio\.com$ [NC]
-
RewriteRule ^(.*)$ http://dominio.com/$1 [L,R=301]
Más sobre .htaccess (en inglés):
- Avoiding the use of .htaccess for performance
- Comprehensive guide to .htaccess
- Stupid htaccess Tricks
Fuente: DevMoose








Martes, 23 de Febrero de 2010 a las 08.18
Interesante aporte, gracias por compartir. Saludos Cordiales
Martes, 23 de Febrero de 2010 a las 10.30
Muy buena recopilación. Casi indispensable tenerla a la mano en todo momento
Miércoles, 24 de Febrero de 2010 a las 01.13
Amigos de elwebmaster.com cheken porfavor el titulo de la pagina puesto que en el post dice "21 hacks..."
y en el dice "23 hacks..."
reporte: 23/02/2010 a las 21:24 hrs (-6 GMT)[Hora del centro de México]
Jueves, 25 de Febrero de 2010 a las 09.04
Hay que ver la de cosas que puedes hacer con .htaccess y sin plugins. Asà de un vistazo ya voy a quitar 2. Saludos!
Jueves, 25 de Febrero de 2010 a las 13.29
Excelente artÃculo
Lunes, 1 de Marzo de 2010 a las 11.09
Hola David. ¡Muchas gracias! Ya corregimos el error.
Lunes, 1 de Marzo de 2010 a las 11.50
Requiero una orientación inicial para crear un pagina WEB la cual contenga un pequeño
programa de administracion de inmuebles, para mi es impotante conover los pasos iniciales- Gracias
Miércoles, 3 de Marzo de 2010 a las 05.59
Me gustarÃa leer un articulo más detallado sobre las "Rewrite". Como se puede conseguir que usuarios de web tengan páginas personales con enlace tipo midominio.com/USUARIO sin que afecta a los demás archivos de portal?
Domingo, 7 de Marzo de 2010 a las 03.14
buen articulo, ya lo copie y paste para probar algunos gracias.
Domingo, 7 de Marzo de 2010 a las 10.27
Hola, en el #20 creo que te has dejado el RewriteRule.
Saludos. Muy buena recopilación.
Domingo, 7 de Marzo de 2010 a las 23.21
Excelente articulo!!
Lunes, 8 de Marzo de 2010 a las 16.36
Excelente como siempre...
Jueves, 11 de Marzo de 2010 a las 11.52
Saludos, muy buena recopilación, yo desconocÃa todas las potencialidades que aporta la configuración de este archivo.
Jueves, 8 de Abril de 2010 a las 17.54
EXCELENTE.... lo felicito y lo admiro... ya esta casi puesto. jejeje
Lunes, 26 de Abril de 2010 a las 10.31
La mitad copiados de acá :S http://rafeekphp.wordpress.com/2009/06/06/16-great-htaccess-tricks-and-hacks/
Jueves, 6 de Mayo de 2010 a las 13.37
Me salvo la vida Yeah! Gracias
Jueves, 13 de Mayo de 2010 a las 13.11
Que pasa que no hay mas actualizaciones de este exelente sitio?
Sábado, 15 de Mayo de 2010 a las 20.04
Gracias por el articulo, justo necesitaba lo del hotlinking, que hay mucho gorrón suelto.
Un saludo,
Jose
Sábado, 15 de Mayo de 2010 a las 23.44
Gracias, algunos me los sabÃa, pero muchos no.
La verdad me sorprende todo lo qeu se puede hacer por medio del htaccess
Jueves, 8 de Julio de 2010 a las 20.06
Me ha sido de gran ayuda. Muchas gracias ^^
Domingo, 18 de Julio de 2010 a las 01.43
exelente esta publicacion gracias por el gran aporte
Jueves, 29 de Julio de 2010 a las 13.58
Muy bueno .. gracias ..
Miércoles, 11 de Agosto de 2010 a las 20.05
Gracias por el dato me sirvió para hacer direccionamiento ---------->
Lunes, 23 de Agosto de 2010 a las 03.42
gracias! util y corriendo en mi paginas http://yeow.com.ar
Lunes, 30 de Agosto de 2010 a las 18.31
Este articulo esta muy intesante, te felicito!
Martes, 12 de Octubre de 2010 a las 10.43
[...] 21 hacks de htaccess que todo desarrollador deberÃa conocer [...]
Martes, 19 de Octubre de 2010 a las 12.20
Muchas gracias, referente al articulo 5, sabes algun sitio web para descargar paginas de errores que esten bien y de calidad?
Miércoles, 3 de Noviembre de 2010 a las 21.46
Muy buena información, gracias por compartirla.
Sábado, 6 de Noviembre de 2010 a las 23.16
[...] Hace poco postie una solución para crear marcas de agua con htaccess, php y la libreria gd. En esta oportunidad publico algunos script que fueron volcados en la web elwebmaster.com. [...]
Martes, 8 de Marzo de 2011 a las 17.01
Extraordinarios consejos me quedo con la duda de si podemos redirigir a una página a un entorno de ip's y asà personalizar según nacionalidades, crees que se podrÃa? Seguiré tu blog
Domingo, 3 de Abril de 2011 a las 15.06
Gracias , me has salvado tenia un poblemilla y con estos codigos me va perfecto
Viernes, 15 de Julio de 2011 a las 19.25
esta bueno
Jueves, 25 de Agosto de 2011 a las 17.28
Hola, Gracias por la información!!! me queda una duda.Después de usar .Htaccess, tengo problemas con el traductor. Tengo varios lectores que usan el traductor de google, pero al momento de traducir desaparecen las imagenes, (nos se ven) La primera página se ve bien a primera vista, pero al entrar a las entradas desaparecen todas las imagenes.
Sabes de algun código para dar permiso al traductor o alguna otra solución?
Lunes, 17 de Octubre de 2011 a las 15.30
Que interesante..!! muchas veces temenos problemas o necesitamos una de estas hacks, creo ahora tenemos a la mano. Gracias por este aporte tan grandioso.
Un abrazo,
Martes, 29 de Noviembre de 2011 a las 15.58
Oigan amigos del Webmasters les quiero hacer esta pregunta;
¡Como hago para que en vez de mostrar http://www.mipagina.com/quienes_somos.asp?
solo me muestre http://www.mipagina.com/conozcanos-mejor-para-darnos-preferencia
La pagina esta hecha en html y asp.net.
O para que me entiendan mejor a mi pregunta como le hago (como le hicieron ustedes) para que la url de este post: "21 hacks de htaccess que todo desarrollador deberÃa conocer" se los mostrara asi;
http://www.elwebmaster.com/general/21-hacks-de-htaccess-que-todo-desarrollador-deberia-conocer
Me podrian decir el procedimiento paso a paso por favor.
Un saludo de antemano soy fan de ustedes, me encanta leer sus articulos en ratos libres.
Jueves, 29 de Diciembre de 2011 a las 11.28
Información muy útil justo lo que andaba buscando, gracias un saludo.