¿Qué es el archivo .htaccess?

El archivo .htaccess es un archivo de configuración para personalizar como el servidor trata nuestra web, este se coloca en la raiz del servidor. El HTTP Apache, tecnología que utilizan la mayoría de servidores, popularizó su uso y hoy en día casi todas las webs lo utilizan para:

  • Autorizar / Restringir el acceso
    • Usualmente podemos tener carpetas o archivos sensibles que no quisieramos que se accediera utilizando http://midominio.com/privado.
    • Además podríamos restringir el acceso a la web entera y siendo solo accesible utilizando una contraseña o también bloqueando el acceso de un usuario por su IP.
  • Caché
    • Para guardar los archivos que utiliza tu web y así acceder rapidamente.
  • URLs Amigables
  • Utilizar dominio con o sin WWW
  • Evitar hot-linking

Ahora que sabemos sus principales características pasamos a ver como implementar cada una de ellas.

Autorizar / Restringir el acceso

Primeramente lo que tenemos que hacer es restringir el acceso al propio .htaccess:

<Files .htaccess>
order allow,deny
deny from all
</Files>

En caso de que queramos restringir otro archivo solo tenemos que cambiar el .htaccess del código anterior por el nombre más la extensión del archivo que queramos. Si quisieramos restringir varios archivos a la vez utilizaríamos en vez de <Files> pondremos <FilesMatch>:

<FilesMatch ".(htaccess|presupuesto.pfg)$">
Order Allow,Deny
Deny from all
</FilesMatch>

Con las barras verticales | separaremos los distintos archivos los cuales queremos que no sean accesibles. Para directorios lo mejor es utilizar la siguiente linea para evitar que se pueda acceder a cualquier directorio: Options All -Indexes, siendo el símbolo - el que nos indica que no se permite.

Caché

Utilizamos el caché para aumentar la velocidad de carga de nuestra web ya que esta se guarda en el ordenador. Suena muy bien pero es uno de los apartados más delicados y es que especificar el caché no siempre es bueno. Si tenemos un blog en el que cada día se publican cuatro posts si tenemos la página almacenada en el caché, un usuario cuando entre no verá los cuatro posts de hoy sino los de la última vez que entró.

<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access 1 year"
ExpiresByType image/jpeg "access 1 year"
ExpiresByType image/gif "access 1 year"
ExpiresByType image/png "access 1 year"
ExpiresByType text/css "access 1 month"
ExpiresByType text/x-javascript "access 1 month"
ExpiresByType application/pdf "access 1 month"
ExpiresByType image/x-icon "access 1 year"
ExpiresByType text/html "access 1 month"
ExpiresByType application/x-shockwave-flash "access 1 month"
ExpiresByDefault "access 1 month"
</IfModule>

URLs Amigables

El tema de las URLs Amigables es bastante extenso pero en este caso vamos a dedicarle una breve introducción para poder utilizarlo sin problemas. Cuando programamos una web solemos tener URLs del estilo: tudominio.com/pedidos?id=23. Esto no queda demasiado bonito ni a ojos del usuario ni a ojos de Google. Por ello utilizamos las URLs Amigables, para convertir lo anteriormente escrito a: tudominio.com/pedidos/ ó tudominio.com/pedidos/23, personalmente prefiero la primera.

# Activar RewriteEngine
RewriteEngine on

#   Entrada:  pedidos/ID
#   Salida: pedidos.php?id=ID
RewriteRule ^pedidos/(w+)/?$ pedidos.php?id=$1

Para que todo surga efecto en la etiqueta <a> que llama ese archivo debemos escribir <a href="pedidos/23">¡Haz tu pedido!</a>.

Utilizar dominio con o sin WWW

Google valora mucho aquellas páginas web que se redireccionan ya sea a con o sin WWW. El utilizar o no las tres w no afectará en nada a tu página web, es algo a gusto del dueño de la página web. Aquí te explicamos como hacerlo para poner con o sin:

Con WWW

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(tudominio.com)(:80)? [NC]
RewriteRule ^(.*) http://www.tudominio.com/$1 [R=301,L]

Sin WWW

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www.tudominio.com)(:80)? [NC]
RewriteRule ^(.*) http://tudominio.com/$1 [R=301,L]

Como es obvio hay que cambiar tudominio por el dominio de tu página web.

Evitar el hot-linking

El hot-linking consiste en que otras web utilizan fotos tuyas, esto quiere decir que si tu tienes una foto en tudominio.com/img/header.png, y alguien copia y pega el enlace, lo que él estará haciendo es utilizar el ancho de banda de tu servidor. Si su web tiene millones de visitas y tu servidor es pequeño puede acabar por consumir tu ancho de banda. Para evitar esto utilizamos el siguiente código:

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www.)?tudominio.com/.*$ [NC]
RewriteRule .*.(gif|jpg|png)$ - [F,L]
</ifModule>

ADVERTENCIA: Hay que tener cuidado pues el uso de este método también afecta al feed.

Aumentar conocimientos sobre el .htaccess

En este post hemos dado una guia básica del uso de .htaccess viendo sus distintas posibilidades. Para saber más aún sobre este archivo lleno de posibilidades te recomiendo el siguiente artículo de AyudaWP y este de IgnacioSantiago. Si quieres utilizar un editor online para crear el archivo .htaccess es recomendable utilizar este.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *