Descripción
El fichero .htaccess es un archivo de configuración a nivel de directorio utilizado por el servidor Apache para aplicar reglas específicas sin necesidad de modificar la configuración global. Según la documentación oficial de Apache, permite definir directivas como control de acceso, reescritura de URLs, manejo de errores o ajustes de rendimiento, siempre condicionado por la directiva AllowOverride, que determina qué configuraciones pueden aplicarse en estos archivos.
A nivel normativo, el uso de .htaccess está regulado por las directivas del propio servidor Apache, especialmente AccessFileName, AllowOverride, Options, y los módulos relacionados como mod_rewrite, mod_authn_file, mod_authz_groupfile o mod_mime. Estas directivas definen el alcance, permisos y limitaciones del archivo, y su comportamiento está documentado en la Apache HTTP Server Documentation 2.4, que establece que su uso debe limitarse a casos donde no se tenga acceso al archivo de configuración principal debido a su impacto en el rendimiento.
Para profundizar en su funcionamiento, la guía oficial de Apache y recursos técnicos como la documentación de mod_rewrite explican cómo se procesan las reglas en contexto de directorio, cómo se interpretan las rutas y cuándo es necesario utilizar directivas como RewriteBase. También se detallan los requisitos previos para que las reglas funcionen, como habilitar AllowOverride FileInfo y Options FollowSymLinks, sin los cuales las reglas de reescritura son ignoradas. Estas referencias técnicas son esenciales para aplicar configuraciones avanzadas de forma correcta y segura.
Enlaces técnicos y documentación
.htaccess - Tutorial del Servidor Apache HTTP: Ficheros .htaccess
Ejemplo
# ---------------------------------------------------------
# 1. Forzar HTTPS en TODO el sitio
# ---------------------------------------------------------
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# ---------------------------------------------------------
# 2. Seguridad esencial
# ---------------------------------------------------------
# Evitar XSS en navegadores antiguos
<IfModule mod_headers.c>
Header set X-XSS-Protection "1; mode=block"
</IfModule>
# Evitar listado de directorios
Options -Indexes
# Bloquear acceso a archivos sensibles
<FilesMatch "\.(env|ini|log|sh|sql|bak|config)$">
Require all denied
</FilesMatch>
# Proteger el propio .htaccess
<Files .htaccess>
Require all denied
</Files>
# ---------------------------------------------------------
# 3. Rendimiento: Cache y compresión
# ---------------------------------------------------------
# Cache de archivos estáticos
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType image/gif "access plus 1 month"
ExpiresByType text/css "access plus 1 month"
ExpiresByType application/javascript "access plus 1 month"
ExpiresByType text/html "access plus 1 hour"
</IfModule>
# Compresión GZIP
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/plain text/html text/xml text/css application/javascript application/json
</IfModule>