Los archivos .htaccess controlan parte del funcionamiento de los servidores Apache y permiten hacer infinidad de cosas útiles.
A continuación, les presento una lista de 10 códigos .htaccess que todo desarrollador web debería tener al alcance de la mano. Recuerda siempre hacer un respaldo de tus archivos originales para restaurar en caso de que algo salga mal.
1. Remover el www de las url
Por cuestiones de SEO deberías siempre remover (o usar) el prefijo www de las url de tu sitio web. La siguiente porción de código removerá el www y redireccionará cualquier url a su equivalente sin el www.
RewriteEngine On
RewriteCond %{HTTP_HOST} !^your-site.com$ [NC]
RewriteRule ^(.*)$ http://your-site.com/$1 [L,R=301]
2. Prevenir el Hotlinking
El Hotlinking es una mala práctica que consiste en usar imágenes de otros sitios en los nuestros. Cuando eres víctima del hotlinking, alguien más está usando también tu ancho de banda para su propio beneficio. Afortunadamente, el hotlinking se puede prevenir.
Agrega el siguiente código en el .htaccess de tu sitio, modificando las url de ejemplo por las tuyas.
RewriteEngine On
#Replace ?mysite\.com/ with your blog url
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?mysite\.com/ [NC]
RewriteCond %{HTTP_REFERER} !^$
#Replace /images/nohotlink.jpg with your "don't hotlink" image url
RewriteRule .*\.(jpe?g|gif|bmp|png)$ /images/nohotlink.jpg [L]
3. Redigir todos los feeds de WordPress hacia Feedburner
Feedburner es un servicio web que te permite saber que cantidad de usuarios leen tu blog a través de feeds. Si usas WordPress, quizá te interese mover tus feeds (rss, atom, etc) hacia Feedburner. Para hacerlo modifica las líneas 2 y 3 del siguiente código para ajustarlo a tus necesidades e insértalo en el .htaccess de tu sitio.
<IfModule mod_alias.c> RedirectMatch 301 /feed/(atom|rdf|rss|rss2)/?$http://feedburner.com/yourfeed/ RedirectMatch 301 /comments/feed/(atom|rdf|rss|rss2)/?$http://feedburner.com/yourfeed/ </IfModule>
4. Generar páginas de error personalizadas
¿Cansado de las páginas de error de tu sitio? Simplemente crea algunas nuevas que luzcan como tú quieras, súbelas en tu servidor y utiliza el siguiente código .htaccess.
ErrorDocument 400 /errors/badrequest.html ErrorDocument 401 /errors/authreqd.html ErrorDocument 403 /errors/forbid.html ErrorDocument 404 /errors/notfound.html ErrorDocument 500 /errors/serverr.html
5. Forzar la descarga de archivos específicos
Cuando ofreces descargas en tu sitio con extensiones .mp3, .xls, .eps, etc, puedes utilizar el siguiente código en tu .htaccess para forzar la descarga de estos archivos, en lugar de dejar al navegador decidir qué hacer con ellos. (Ejemplo para .xls y .eps)
<Files *.xls> ForceType application/octet-stream Header set Content-Disposition attachment </Files> <Files *.eps> ForceType application/octet-stream Header set Content-Disposition attachment </Files>
6. Llevar un registro de los errores de PHP
El siguientes código te permite llevar un registro de los errores de PHP que se han generado en tu sitio. Simplemente crear un archivo php_error.log, alójalo en algún directorio del sitio y copia el siguiente código en tu archivo .htaccess. No olvides modificar la ruta que vayas a utilizar (línea 7).
# display no errs to user php_flag display_startup_errors off php_flag display_errors off php_flag html_errors off # log to file php_flag log_errors on php_value error_log /location/to/php_error.log
7. Remover extensiones de las url
Las extensiones en las url pueden ser útiles para nosotros los desarrolladores, pero no aportan nada a los visitantes de nuestro sitio. El siguiente código remueve las extensiones .html de todos los archivos html del sitio. Cabe destacar que el mismo código sirve para reemplazar cualquier otra extensión, como php, asp, etc, modificándolo donde corresponde.
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(.*)$ $1.html
# Reemplaza html con la extension de tu archivo, ej: php, htm, asp
8. Prevenir listado de directorios
En tu servidor, cuando un directorio no contiene un archivo index, Apache automáticamente genera y muestra en el navegador un listado con los archivos de dicho directorio. Si quieres evitar que alguien vea el contenido de estos directorios, agrega el siguiente código en tu .htaccess.
Options –Indexes
9. Reducir el peso de las páginas comprimiendo el contenido estático
¿Sabías que es posible enviar contenido comprimido al visitante para que este sea descomprimido por el cliente? El siguiente código será de gran ayuda, salvando tu ancho de banda (y el de tus visitantes) reduciendo el peso de las páginas.
AddOutputFilterByType DEFLATE text/html text/plain text/xmlapplication/xml application/xhtml+xml text/javascripttext/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
10. Añadir codificación utf-8 automáticamente a los archivos
Con el fin de prevenir errores de codificación, puedes utilizar el siguiente método para forzar utf-8 en todos los archivos. De esta manera garantizas que los documentos se mostrarán siempre de manera correcta, incluso si olvidaste insertar la etiqueta <meta http-equiv=”Content-Type”> en tus html.
<FilesMatch "\.(htm|html|css|js)$"> AddDefaultCharset UTF-8 </FilesMatch>
Fuente: Cats who code
