Diez trucos para configurar .htaccess que cualquiera debería conocer
Con la ayuda de un fichero .htaccess (del inglés hypertext access) es posible configurar y establecer reglas para servidores web compatibles con NCSA, como lo es HTTP Apache. Los archivos .htaccess sirven, por ejemplo, para asignar permisos de acceso a determinados usuarios a ciertos archivos o para configurar el reenvío automático.
¿Qué es exactamente un archivo .htaccess?
Los ficheros .htaccess son archivos de texto con los que determinados usuarios tienen permitido gestionar servidores compatibles con el NCSA. Esta técnica fue desarrollada en los años 90 para el entonces innovador servidor NCSA HTTPD. Sus procesos están controlados por uno o más archivos llamados “httpd.conf”. Estos archivos permiten definir directivas de configuración para todo directorio de programas de un servidor web y son definidos por el administrador. Así se precisa, entre otras cosas, si un usuario está autorizado a modificar su configuración valiéndose de ficheros .htaccess. De ser así, este usuario puede crear y editar los archivos sobreescribiendo partes de la configuración en el directorio.
Cada vez que un usuario accede a una web, el servidor escanea recursivamente todos los directorios padre – el .htaccess es un archivo contenido dentro de estos directorios – sin guardar temporalmente los datos recientemente procesados. Los cambios hechos con un archivo .htaccess en la configuración del servidor son válidos desde el momento en el que éste se almacena en el directorio – sin necesidad de reiniciar el servidor. Es muy importante que la ortografía sea absolutamente correcta, pues un .htaccess mal escrito puede impedir el acceso de la página al servidor. Para facilitar el trabajo de configuración, existen algunos trucos prácticos con los que se pueden gestionar algunas características del servidor web. Debido a que con muchos de ellos es posible implementar acciones en la estructura de un sistema ya existente, es común conocerlos 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 disponibilidad de acceso al servidor web. Por ejemplo, si el usuario se conecta con Telnet o SSH, podrá crear y editar estos ficheros directamente en el servidor. Si solo se tiene un acceso FTP disponible, el archivo se debe crear de forma local, y ser subido posteriormente al servidor. Siempre que se cree un fichero .htaccess, el nombre empezará con un punto; en los sistemas Unix, los archivos específicos de configuración del directorio siempre comienzan con un punto, identificándolos 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 desaparecido. El punto al principio del nombre suele ser un problema durante la creación de archivos .htaccess locales en Windows, pero es posible solucionarlo rápidamente. 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 directorio de destino, donde será inmediatamente válido para todos los subdirectorios.
Hacks de .htaccess para configurar un servidor
Valiéndose de ficheros .htaccess, aquellos usuarios autorizados por el administrador cuentan con los permisos necesarios para modificar la configuración de un servidor web. También es posible, por ejemplo, proteger directorios completos a través de una autenticación HTTP contra accesos no autorizados. Además, es posible crear páginas de error personalizadas o configurar el redireccionamiento de una web. A continuación explicaremos estos y otros consejos útiles para la gestión de ficheros .htaccess:
1. Páginas de error personalizadas
Cuando se presenta un error al acceder a una página web, los servidores muestran de forma predeterminada 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 agradables para el visitante. Usar .htaccess permite también personalizar páginas alternas o mensajes de todo tipo, como pueden ser aquellos que sugieren artículos parecidos que podrían interesarle al cliente en las tiendas online. Para implementar los mensajes de error es necesario integrar los siguientes 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 directorio raíz o en una URL externa, también es posible modificarla. En este caso, los datos a introducir son: En caso de que la página de error se encuentre fuera del directorio raíz o en una URL externa, también es posible modificarla. En este caso, los datos a introducir son:
# Mensaje de error personalizado en ubicación local
ErrorDocument 404 http:// www.dominio.tld/ruta-de-acceso/404.html
2. Redirecciones
Una de las grandes aplicaciones de los ficheros .htaccess son las redirecciones. Estas pueden incluir la redirección de archivos individuales dentro de una misma página web o el reenvío de solicitudes a otro dominio. Esto resulta especialmente práctico cuando una web cambia de dominio. Almacenado en el directorio raíz, el siguiente código asegura que todas las solicitudes hechas en el dominio antiguo se redireccionen al nuevo:
# Redirección simple
Redirect /http://www. nuevo-dominio.tld/
También es posible redirigir archivos individuales 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 individuales 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 protegidas por contraseña
Quien no quiera escribir extensas secuencias de comandos de inicio de sesión con PHP, pero necesite un directorio o un archivo protegido en un servidor web, puede valerse de .htaccess para establecer áreas protegidas por contraseñas. En primer lugar, se necesitará un segundo archivo llamado .htpasswd, donde se guardarán los nombres de usuario y contraseña. Los sistemas Unix solo aceptarán archivos .htpasswd que hayan sido previamente cifrados. Para este fin es común encontrar diferentes tipos de generadores .htpasswd. Proteger un directorio con contraseña mediante .htaccess es posible si se implementa 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 respectivas contraseñas cifradas: Se creará, además, un .htpasswd para cada usuario con sus respectivas contraseñas cifradas:
# archivo .htpasswd para nombres de usuario contraseña
User1:duCmo1zxkKx6Y
User2:mou3IYjSLpGWI
User3:HGKS9XzDXXAXQ
Es recomendable que el archivo .htpasswd sea guardado por encima del directorio raíz y que el .htaccess se encuentre en el directorio a proteger. Es recomendable que el archivo .htpasswd sea guardado por encima del directorio raíz y que el .htaccess se encuentre en el directorio a proteger.
4. Aumentar la memoria límite de PHP
El uso de aplicaciones PHP está sujeto a un límite de memoria determinado. Este límite determina el espacio máximo de memoria que pueden ocupar los scripts PHP en un servidor. Utilizando 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. Dependiendo de los requisitos de almacenamiento 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 equivocado, es posible ajustarlo usando el siguiente .htaccess:
# Establecer zona horariaSetEnv TZ Europe/Madrid
6. Bloquear direcciones IP
Es posible denegar el acceso de determinadas direcciones IP a una página web. Con los ajustes necesarios, es posible usar un archivo .htaccess que excluya incluso todas las direcciones IP y le permita el acceso a algunas muy específicas. Esto resulta muy útil para empresas que quieren limitar la entrada a una web únicamente desde su Intranet. El siguiente comando resume una de las posibles opciones para restringir 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 interpretación de la información registrada, aunque el orden en teoría no importa. Los otros comandos le comunican al servidor web que todos los usuarios con el identificador “aol.com”, así como con la dirección IP “192.168” no están autorizados para ver la página web. Mientras que el usuario “192.168.220.102” cuenta con todos los permisos necesarios. Con la entrada “Order” se establece el orden de interpretación de la información registrada, aunque el orden en teoría no importa. Los otros comandos le comunican al servidor web que todos los usuarios con el identificador “aol.com”, así como con la dirección IP “192.168” no están autorizados para ver la página web. Mientras que el usuario “192.168.220.102” cuenta con todos los permisos necesarios.
7. Redirección de HTTP a HTTPS
Quienes usen un certificado SSL para un dominio, tienen la posibilidad de redireccionarlo 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 directorio se puede visualizar en el navegador y estará disponible para que otros usuarios lo puedan descargar:
# Mostrar contenido del directorio
Options +Indexes
9. Prevenir hotlinking de imágenes
El llamado hotlinking hace referencia a la acción en la que una tercera persona enlaza a un archivo, normalmente 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 influencia. 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. Especificar la codificación de los documentos
Los acentos suelen ser problemáticos cuando no existe un charset adecuado. Un fichero .htaccess puede determinar exactamente qué codificación de caracteres usar para cada tipo de documento. Con el siguiente comando es posible codificar todos los documentos bajo el UTF-8:
# Especificar códificación de caracteres
AddDefaultCharset utf-8
En caso de que solo ciertos tipos de documentos deban ser codificados, se adjuntarán, en la medida en que sea necesario, las siguientes terminaciones: En caso de que solo ciertos tipos de documentos deban ser codificados, se adjuntarán, en la medida en que sea necesario, las siguientes terminaciones:
# 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 anteriores son solo una pequeña muestra de las posibilidades que ofrecen los archivos .htaccess para la configuración de un servidor. Además, todos los comandos son implementados inmediatamente en el servidor web sin la necesidad de reiniciarlo completamente.