Con la ayuda de un fichero .htaccess (del inglés hypertext access) es posible co­n­fi­gu­rar y es­ta­ble­cer reglas para se­r­vi­do­res web co­m­pa­ti­bles con NCSA, como lo es HTTP Apache. Los archivos .htaccess sirven, por ejemplo, para asignar permisos de acceso a de­te­r­mi­na­dos usuarios a ciertos archivos o para co­n­fi­gu­rar el reenvío au­to­má­ti­co.

¿Qué es exac­ta­me­n­te un archivo .htaccess?

Los ficheros .htaccess son archivos de texto con los que de­te­r­mi­na­dos usuarios tienen permitido gestionar se­r­vi­do­res co­m­pa­ti­bles con el NCSA. Esta técnica fue de­sa­rro­lla­da en los años 90 para el entonces innovador servidor NCSA HTTPD.  Sus procesos están co­n­tro­la­dos por uno o más archivos llamados “httpd.conf”. Estos archivos permiten definir di­re­c­ti­vas de co­n­fi­gu­ra­ción para todo di­re­c­to­rio de programas de un servidor web y son definidos por el ad­mi­ni­s­tra­dor. Así se precisa, entre otras cosas, si un usuario está au­to­ri­za­do a modificar su co­n­fi­gu­ra­ción va­lié­n­do­se de ficheros .htaccess. De ser así, este usuario puede crear y editar los archivos so­bree­s­cri­bie­n­do partes de la co­n­fi­gu­ra­ción en el di­re­c­to­rio.

Cada vez que un usuario accede a una web, el servidor escanea re­cu­r­si­va­me­n­te todos los di­re­c­to­rios padre – el .htaccess es un archivo contenido dentro de estos di­re­c­to­rios – sin guardar te­m­po­ra­l­me­n­te los datos re­cie­n­te­me­n­te pro­ce­sa­dos. Los cambios hechos con un archivo .htaccess en la co­n­fi­gu­ra­ción del servidor son válidos desde el momento en el que éste se almacena en el di­re­c­to­rio – sin necesidad de reiniciar el servidor. Es muy im­po­r­ta­n­te que la or­to­gra­fía sea ab­so­lu­ta­me­n­te correcta, pues un .htaccess mal escrito puede impedir el acceso de la página al servidor. Para facilitar el trabajo de co­n­fi­gu­ra­ción, existen algunos trucos prácticos con los que se pueden gestionar algunas ca­ra­c­te­rí­s­ti­cas del servidor web. Debido a que con muchos de ellos es posible im­ple­me­n­tar acciones en la es­tru­c­tu­ra de un sistema ya existente, es común co­no­ce­r­los como hacks para .htaccess.

Crear un archivo .htaccess

Debido a que son archivos de texto sin formato, los archivos .htaccess se pueden crear y modificar con cualquier editor de texto. El proceso de creación dependerá de la di­s­po­ni­bi­li­dad de acceso al servidor web. Por ejemplo, si el usuario se conecta con Telnet o SSH, podrá crear y editar estos ficheros di­re­c­ta­me­n­te en el servidor. Si solo se tiene un acceso FTP di­s­po­ni­ble, el archivo se debe crear de forma local, y ser subido po­s­te­rio­r­me­n­te al servidor. Siempre que se cree un fichero .htaccess, el nombre empezará con un punto; en los sistemas Unix, los archivos es­pe­cí­fi­cos de co­n­fi­gu­ra­ción del di­re­c­to­rio siempre comienzan con un punto, ide­n­ti­fi­cá­n­do­los como “ocultos”. Por eso es muy común que al usar un cliente FTP gráfico, parece como si el archivo .htaccess recién subido hubiera des­apa­re­ci­do. El punto al principio del nombre suele ser un problema durante la creación de archivos .htaccess locales en Windows, pero es posible so­lu­cio­nar­lo rá­pi­da­me­n­te. Para evitar que el editor de texto guarde el archivo bajo el típico .txt, es necesario marcar la opción “todos los archivos”. Hecho esto, solo debe ser movido al di­re­c­to­rio de destino, donde será in­me­dia­ta­me­n­te válido para todos los su­b­di­re­c­to­rios.

Hacks de .htaccess para co­n­fi­gu­rar un servidor

Va­lié­n­do­se de ficheros .htaccess, aquellos usuarios au­to­ri­za­dos por el ad­mi­ni­s­tra­dor cuentan con los permisos ne­ce­sa­rios para modificar la co­n­fi­gu­ra­ción de un servidor web. También es posible, por ejemplo, proteger di­re­c­to­rios completos a través de una au­te­n­ti­ca­ción HTTP contra accesos no au­to­ri­za­dos. Además, es posible crear páginas de error pe­r­so­na­li­za­das o co­n­fi­gu­rar el re­di­re­c­cio­na­mie­n­to de una web. A co­n­ti­nua­ción ex­pli­ca­re­mos estos y otros consejos útiles para la gestión de ficheros .htaccess:

1. Páginas de error pe­r­so­na­li­za­das

Cuando se presenta un error al acceder a una página web, los se­r­vi­do­res muestran de forma pre­de­te­r­mi­na­da un archivo HTML estándar o un mensaje por defecto. Estos mensajes de error suelen ser simples y sin mayor atractivo visual; en otras palabras, no son nada agra­da­bles para el visitante. Usar .htaccess permite también pe­r­so­na­li­zar páginas alternas o mensajes de todo tipo, como pueden ser aquellos que sugieren artículos parecidos que podrían in­te­re­sar­le al cliente en las tiendas online. Para im­ple­me­n­tar los mensajes de error es necesario integrar los si­guie­n­tes datos al .htaccess:

# Mensaje de error personalizado en ubicación local
ErrorDocument 404 /ruta-de-acceso/404.html

En caso de que la página de error se encuentre fuera del di­re­c­to­rio raíz o en una URL externa, también es posible mo­di­fi­car­la. En este caso, los datos a in­tro­du­cir son: En caso de que la página de error se encuentre fuera del di­re­c­to­rio raíz o en una URL externa, también es posible mo­di­fi­car­la. En este caso, los datos a in­tro­du­cir son:  

# Mensaje de error personalizado en ubicación local
ErrorDocument 404 http:// www.dominio.tld/ruta-de-acceso/404.html

2. Re­di­re­c­cio­nes

Una de las grandes apli­ca­cio­nes de los ficheros .htaccess son las re­di­re­c­cio­nes. Estas pueden incluir la re­di­re­c­ción de archivos in­di­vi­dua­les dentro de una misma página web o el reenvío de so­li­ci­tu­des a otro dominio. Esto resulta es­pe­cia­l­me­n­te práctico cuando una web cambia de dominio.  Al­ma­ce­na­do en el di­re­c­to­rio raíz, el siguiente código asegura que todas las so­li­ci­tu­des hechas en el dominio antiguo se re­di­re­c­cio­nen al nuevo:

# Redirección simple
Redirect /http://www. nuevo-dominio.tld/

También es posible redirigir archivos in­di­vi­dua­les dentro de una misma página web, en caso de que, por ejemplo, cambie el nombre de la web: También es posible redirigir archivos in­di­vi­dua­les dentro de una misma página web, en caso de que, por ejemplo, cambie el nombre de la web:  

# Redirección de archivos
Redirect /antigua-web.html http:// www.nueva-web.html

3. Áreas pro­te­gi­das por co­n­tra­se­ña

Quien no quiera escribir extensas se­cue­n­cias de comandos de inicio de sesión con PHP, pero necesite un di­re­c­to­rio o un archivo protegido en un servidor web, puede valerse de .htaccess para es­ta­ble­cer áreas pro­te­gi­das por co­n­tra­se­ñas. En primer lugar, se ne­ce­si­ta­rá un segundo archivo llamado .htpasswd, donde se guardarán los nombres de usuario y co­n­tra­se­ña.  Los sistemas Unix solo aceptarán archivos .htpasswd que hayan sido pre­via­me­n­te cifrados. Para este fin es común encontrar di­fe­re­n­tes tipos de ge­ne­ra­do­res .htpasswd. Proteger un di­re­c­to­rio con co­n­tra­se­ña mediante .htaccess es posible si se im­ple­me­n­ta el comando:

# Protección con contraseña simple de .htaccess
AuthType Basic
AuthName "Área protegida"
AuthUserFile /<ruta absoluta al archivo de contraseña>/.htpasswd
AuthPGAuthoritative Off
require user User1 User2 User3

Se creará, además, un .htpasswd para cada usuario con sus re­s­pe­c­ti­vas co­n­tra­se­ñas cifradas: Se creará, además, un .htpasswd para cada usuario con sus re­s­pe­c­ti­vas co­n­tra­se­ñas cifradas: 

# archivo .htpasswd para nombres de usuario contraseña
User1:duCmo1zxkKx6Y
User2:mou3IYjSLpGWI
User3:HGKS9XzDXXAXQ

Es re­co­me­n­da­ble que el archivo .htpasswd sea guardado por encima del di­re­c­to­rio raíz y que el .htaccess se encuentre en el di­re­c­to­rio a proteger. Es re­co­me­n­da­ble que el archivo .htpasswd sea guardado por encima del di­re­c­to­rio raíz y que el .htaccess se encuentre en el di­re­c­to­rio a proteger.  

4. Aumentar la memoria límite de PHP

El uso de apli­ca­cio­nes PHP está sujeto a un límite de memoria de­te­r­mi­na­do. Este límite determina el espacio máximo de memoria que pueden ocupar los scripts PHP en un servidor. Uti­li­za­n­do el siguiente comando .htaccess es posible aumentar esta capacidad según sea necesario:

# PHP Memory Limit
php_value memory_limit 128M

El valor “128M” se refiere, en este caso, a un límite de 128 megabytes. De­pe­n­die­n­do de los re­qui­si­tos de al­ma­ce­na­mie­n­to y del servidor, es posible fijar otros límites.

5. Cambiar la zona horaria del servidor

En caso de que un servidor se ejecute en el huso horario equi­vo­ca­do, es posible ajustarlo usando el siguiente .htaccess:

# Establecer zona horariaSetEnv TZ Europe/Madrid

6. Bloquear di­re­c­cio­nes IP

Es posible denegar el acceso de de­te­r­mi­na­das di­re­c­cio­nes IP a una página web. Con los ajustes ne­ce­sa­rios, es posible usar un archivo .htaccess que excluya incluso todas las di­re­c­cio­nes IP y le permita el acceso a algunas muy es­pe­cí­fi­cas. Esto resulta muy útil para empresas que quieren limitar la entrada a una web úni­ca­me­n­te desde su Intranet. El siguiente comando resume una de las posibles opciones para re­s­tri­n­gir el acceso:

# Archivo para la regulación de accesos IP
Order deny,allow 
Deny from .aol.com
Deny from 192.168
Allow from 192.168.220.102

Con la entrada “Order” se establece el orden de in­te­r­pre­ta­ción de la in­fo­r­ma­ción re­gi­s­tra­da, aunque el orden en teoría no importa. Los otros comandos le comunican al servidor web que todos los usuarios con el ide­n­ti­fi­ca­dor “aol.com”, así como con la dirección IP “192.168” no están au­to­ri­za­dos para ver la página web. Mientras que el usuario “192.168.220.102” cuenta con todos los permisos ne­ce­sa­rios. Con la entrada “Order” se establece el orden de in­te­r­pre­ta­ción de la in­fo­r­ma­ción re­gi­s­tra­da, aunque el orden en teoría no importa. Los otros comandos le comunican al servidor web que todos los usuarios con el ide­n­ti­fi­ca­dor “aol.com”, así como con la dirección IP “192.168” no están au­to­ri­za­dos para ver la página web. Mientras que el usuario “192.168.220.102” cuenta con todos los permisos ne­ce­sa­rios.  

7. Re­di­re­c­ción de HTTP a HTTPS

Quienes usen un ce­r­ti­fi­ca­do SSL para un dominio, tienen la po­si­bi­li­dad de re­di­re­c­cio­nar­lo a HTTPS usando el siguiente comando .htaccess:

# Activar HTTPS
RewriteEngine On
RewriteCond %{Server_Port} !=443
RewriteRule ^(.*)$ http:// www.tu-dominio.tld/$1 [R=301,L]

8. Permitir el acceso a datos a través del navegador

Con el siguiente comando, el contenido del di­re­c­to­rio se puede vi­sua­li­zar en el navegador y estará di­s­po­ni­ble para que otros usuarios lo puedan descargar:

# Mostrar contenido del directorio
Options +Indexes

9. Prevenir hotli­n­ki­ng de imágenes

El llamado hotli­n­ki­ng hace re­fe­re­n­cia a la acción en la que una tercera persona enlaza a un archivo, no­r­ma­l­me­n­te una imagen, alojado en otro servidor, generando así un mayor volumen de datos para el dueño de una página web, sin que este tenga la más mínima in­flue­n­cia. Usando algunos trucos de .htaccess, como el siguiente comando, es posible bloquear el acceso a ciertos tipos de archivos en una página web:

# Prevenir hotlinking
RewriteEngine on 
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://tu-dominio/.*$ [NC] [OR]
RewriteCond %{HTTP_REFERER} !^http://www.tu-dominio/.*$ [NC] [OR]
RewriteRule .*\.(gif|GIF|jpg|JPG|bmp|BMP|wav|mp3|wmv|avi|mpeg)$ - [F]

10. Es­pe­ci­fi­car la co­di­fi­ca­ción de los do­cu­me­n­tos

Los acentos suelen ser pro­ble­má­ti­cos cuando no existe un charset adecuado. Un fichero .htaccess puede de­te­r­mi­nar exac­ta­me­n­te qué co­di­fi­ca­ción de ca­ra­c­te­res usar para cada tipo de documento. Con el siguiente comando es posible codificar todos los do­cu­me­n­tos bajo el UTF-8:

# Especificar códificación de caracteres
AddDefaultCharset utf-8

En caso de que solo ciertos tipos de do­cu­me­n­tos deban ser co­di­fi­ca­dos, se ad­ju­n­ta­rán, en la medida en que sea necesario, las si­guie­n­tes te­r­mi­na­cio­nes: En caso de que solo ciertos tipos de do­cu­me­n­tos deban ser co­di­fi­ca­dos, se ad­ju­n­ta­rán, en la medida en que sea necesario, las si­guie­n­tes te­r­mi­na­cio­nes:  

# Especificar codificación de caracteres para determinados archivos
AddDefaultCharset utf-8 .css .htm .html .xhtml .php

Trucos para .htaccess prácticos y fáciles de aplicar

Los diez puntos an­te­rio­res son solo una pequeña muestra de las po­si­bi­li­da­des que ofrecen los archivos .htaccess para la co­n­fi­gu­ra­ción de un servidor. Además, todos los comandos son im­ple­me­n­ta­dos in­me­dia­ta­me­n­te en el servidor web sin la necesidad de re­ini­ciar­lo co­m­ple­ta­me­n­te.

Ir al menú principal