El archivo .htaccess

En este artículo vamos a explicar qué es el archivo .htaccess utilizado en servidores web Apache para definir reglas y directivas de comportamiento del servidor.

El archivo .htaccess es un archivo de configuración utilizado en servidores web Apache que permite definir reglas y directivas. Estas reglas y directivas afectan al comportamiento del servidor cuando sirve tus páginas web en Internet.

En este artículo se muestra una guía básica sobre las utilidades más frecuentes del archivo .htaccess en una web HTML. Si te interesa el tema puedes profundizar más en mi Libro Guía básica .htaccess.

Redirecciones .htaccess

Redirecciones de URL: Las redirecciones de URL son útiles para redirigir a los usuarios de una URL a otra. Esto puede ser útil para cambiar la estructura de las URLs, corregir errores de escritura o redireccionar páginas eliminadas o movidas. Un ejemplo de redirección 301 sería:

   Redirect 301 /vieja-pagina.html /nueva-pagina.html

Redirección de dominios: Puedes redirigir un dominio completo a otro dominio, ya sea para consolidar dominios o para redirigir el tráfico de un dominio a otro. Aquí tienes un ejemplo:

   RewriteEngine On
   RewriteCond %{HTTP_HOST} ^www.dominio-viejo.com$ [NC]
   RewriteRule ^(.*)$ http://www.dominio-nuevo.com/$1 [R=301,L]

En este ejemplo se ha utilizado una Reescritura de URL para redirigir que, aunque pueden parecer lo mismo, tienen diferencias que se explican más adelante.

Configuración de la página de error personalizada: Puedes redirigir a una página personalizada para mostrar cuando se produce un error, como el error 404 de página no encontrada. Esto permite una experiencia de usuario más consistente. Por ejemplo:

   ErrorDocument 404 /pagina-no-encontrada.html

Restricción de acceso por IP: Puedes restringir el acceso a tu sitio web permitiendo el acceso sólo a ciertas direcciones IP. Esto es útil para restringir el acceso a áreas administrativas o áreas sensibles de tu sitio. Un ejemplo sería:

<RequireAll>
   Require all denied
   Require ip 123.45.67.89
</RequireAll>

Este ejemplo también serviría como ejemplo de seguridad y restricción de accesos, que se explica más adelante.

Rendimiento .htaccess

Compresión de archivos:
Puedes habilitar la compresión de archivos para reducir el tamaño de los archivos y mejorar el rendimiento de tu sitio web. Esto se logra comprimiendo archivos como HTML, CSS, JavaScript y archivos de imagen. Aquí tienes un ejemplo:

   <IfModule mod_deflate.c>
     AddOutputFilterByType DEFLATE text/html text/css text/javascript
   </IfModule>

Configuración de encabezados: Puedes configurar encabezados HTTP para controlar el almacenamiento en caché, la seguridad y otras políticas relacionadas con los recursos de tu sitio web. Ejemplo:

   <IfModule mod_expires.c>
     ExpiresActive On
     ExpiresByType text/html "access plus 1 week"
     ExpiresByType image/jpeg "access plus 1 month"
   </IfModule>

Seguridad con .htaccess

Bloqueo de acceso a directorios: Puedes bloquear el acceso directo a directorios específicos de tu sitio web para evitar la visualización del contenido de los directorios. Esto ayuda a proteger la privacidad y seguridad de tu sitio. Ejemplo:

   Options -Indexes

Bloqueo de acceso directo a archivos: Puedes evitar que los usuarios accedan directamente a ciertos tipos de archivos, como archivos de configuración, bases de datos o archivos de registro. Esto ayuda a proteger la seguridad de tu sitio web. Un ejemplo sería:

   <FilesMatch "^.*\.config$">
     <RequireAll>
        Require all denied
     </RequireAll>
   </FilesMatch>

Forzar el uso de HTTPS: Puedes redirigir automáticamente a los usuarios a través de una conexión HTTPS segura para proteger la privacidad y la seguridad de los datos. Ejemplo:

   RewriteEngine On
   RewriteCond %{HTTPS} off
   RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Una vez más utilizamos la reescritura de la URL para este propósito, una de las herramientas más potentes que posee el archivo .htaccess.

Habilitar el acceso a través de CORS: Puedes permitir el acceso a recursos de tu sitio web desde otros dominios utilizando la política de control de acceso HTTP (CORS). Esto es útil para compartir recursos entre diferentes dominios. Por ejemplo:

   <IfModule mod_headers.c>
     Header set Access-Control-Allow-Origin "*"
   </IfModule>

Reescritura de Url con el archivo .htaccess

La reescritura de URL es una funcionalidad comúnmente utilizada en el archivo .htaccess para modificar la apariencia y estructura de las URL en un sitio web. Esta utilidad del .htaccess es una de las herramientas más potentes que existen para la configuración de tu servidor.

Al utilizar el archivo .htaccess, es importante tener cuidado y comprender cómo afecta la configuración a tu sitio web. Asegúrate de realizar pruebas exhaustivas después de implementar cambios y realiza copias de seguridad del archivo .htaccess antes de realizar modificaciones importantes, de lo contario, tu servidor puede lanzar el Error 500 !!

Además de las reescrituras ya explicadas en otros apartados, aquí tienes algunas utilidades de reescritura de URL más habituales con ejemplos:

Eliminación de extensiones de archivo: Puedes reescribir URLs para ocultar las extensiones de archivo, lo que brinda URLs más limpias y amigables para los usuarios y los motores de búsqueda. Por ejemplo:

   RewriteEngine On
   RewriteCond %{REQUEST_FILENAME} !-d
   RewriteCond %{REQUEST_FILENAME}\.html -f
   RewriteRule ^([^/]+)/?$ $1.html [L]

Esto permite que la URL http://www.ejemplo.com/pagina se resuelva internamente como http://www.ejemplo.com/pagina.html.

Redireccionamiento de URLs: Puedes redirigir URLs antiguas a nuevas URLs utilizando reescritura de URL. Esto es útil cuando cambias la estructura de tu sitio web o cuando deseas redirigir el tráfico de una página eliminada. Por ejemplo:

   RewriteEngine On
   RewriteRule ^vieja-url$ /nueva-url [R=301,L]

Esto redirigirá la URL http://www.ejemplo.com/vieja-url a http://www.ejemplo.com/nueva-url con un redireccionamiento permanente (código 301).

Parámetros de consulta amigables: Puedes reescribir URLs que contienen parámetros de consulta en una estructura más legible. Esto mejora la usabilidad y la apariencia de las URLs. Ejemplo:

   RewriteEngine On
   RewriteRule ^producto/([^/]+)/([^/]+)$ producto.php?id=$1&categoria=$2 [L]

Esto reescribirá la URL http://www.ejemplo.com/producto/123/electronica internamente como http://www.ejemplo.com/producto.php?id=123&categoria=electronica.

Resumen del archivo .htaccess

Estos son solo algunos ejemplos de las utilidades más frecuentes del archivo .htaccess. Hay muchas más opciones y directivas que se pueden utilizar para personalizar el comportamiento del servidor Apache y mejorar la seguridad, el rendimiento y la usabilidad de tu sitio web HTML.

Es importante tener en cuenta que algunas directivas pueden requerir que se habiliten módulos específicos en el servidor para que funcionen correctamente. La reescritura de URL te brinda flexibilidad para ajustar la apariencia y estructura de las URLs en tu sitio web, mejorando la usabilidad y el SEO.

Espero que este artículo te ayude a entender un poco mejor el uso y funcionamiento del archivo .htaccess.

Deja un comentario