Generador .htaccess: configuración de Apache sin dolores de cabeza
📷 Taylor Vick / PexelsGenerador .htaccess: configuración de Apache sin dolores de cabeza
El archivo .htaccess es la herramienta de configuración por directorio de los servidores Apache. Aprende las reglas esenciales, los errores más comunes y cómo generar una configuración correcta en segundos.
El archivo .htaccess es uno de los archivos más potentes y más malentendidos de un servidor Apache. Un simple error tipográfico puede tirar todo tu sitio con un error 500, pero bien configurado resuelve de un solo golpe la redirección HTTPS, la compresión y el refuerzo de seguridad.
Si necesitas un archivo correcto de inmediato, el generador htaccess te lo crea en segundos. Pero entender qué hace cada directiva te ahorrará muchos quebraderos de cabeza cuando algo no funcione como esperas.
¿Qué es .htaccess?
.htaccess es un archivo de configuración por directorio para servidores web Apache. Su nombre empieza con un punto (.), lo que lo convierte en un archivo oculto en sistemas Unix/Linux.
Cuando Apache procesa una solicitud, revisa el directorio destino y todos sus directorios padres en busca de archivos .htaccess y aplica la configuración que encuentra. Esto te permite definir reglas para directorios específicos sin tocar la configuración principal del servidor.
Casos de uso habituales:
- Hosting compartido (sin acceso a la configuración principal)
- Redirecciones HTTPS y reescritura de URLs
- Compresión y caché del navegador
- Restricciones de acceso y cabeceras de seguridad
Las 3 reglas esenciales que todo sitio necesita
1. Forzar HTTPS
Redirigir automáticamente a los visitantes de HTTP a HTTPS es imprescindible para la seguridad y el SEO.
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
R=301 indica una redirección permanente, informando a los motores de búsqueda del cambio de URL. Añade esta regla solo después de tener instalado un certificado SSL válido; de lo contrario, el sitio quedará inaccesible.
2. Activar la compresión Gzip
Los archivos de texto como HTML, CSS y JavaScript se comprimen entre un 60 y un 80%. La velocidad de carga mejora de forma perceptible.
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/css
AddOutputFilterByType DEFLATE text/javascript application/javascript
AddOutputFilterByType DEFLATE application/json application/xml
</IfModule>
El envoltorio <IfModule> evita errores si mod_deflate no está instalado.
3. Desactivar el listado de directorios
Sin un archivo index.html, Apache muestra por defecto la lista de todos los archivos del directorio. Es una brecha de seguridad grave.
Options -Indexes
Una sola línea impide mostrar el contenido del directorio. Imprescindible en producción.
Con el generador htaccess puedes marcar estas tres opciones y obtener el código al instante.
Errores comunes y cómo evitarlos
El problema de AllowOverride
Cuando .htaccess parece no tener efecto, lo primero que hay que comprobar es esto. Si la configuración principal de Apache contiene:
<Directory /var/www/html>
AllowOverride None
</Directory>
Apache ignora completamente el archivo .htaccess. La solución:
<Directory /var/www/html>
AllowOverride All
</Directory>
Este cambio requiere acceso al archivo de configuración principal. En hosting compartido suele ser All por defecto; en VPS o servidor dedicado hay que comprobarlo y configurarlo uno mismo.
Configurar redireccionamiento www y non-www simultáneamente
Escribir la redirección HTTPS y la normalización www como reglas separadas puede provocar bucles de redirección. La solución correcta es combinar ambas condiciones en una sola regla:
RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteRule ^ https://yourdomain.com%{REQUEST_URI} [R=301,L]
Así se gestionan las cuatro combinaciones de http/https y www/non-www con una sola redirección.
Usar .htaccess en Nginx
Nginx no lee los archivos .htaccess. Después de migrar de Apache a Nginx, todas las reglas de .htaccess deben convertirse manualmente a directivas del bloque server de Nginx.
Algunos proveedores de hosting WordPress usan Nginx por debajo pero muestran un panel de control similar a Apache, lo que puede causar confusión. Verifica siempre qué servidor web está corriendo realmente.
Configuración práctica para WordPress
WordPress necesita .htaccess para sus enlaces permanentes. Esta es la configuración completa recomendada:
Por encima del bloque WordPress:
# Forzar HTTPS
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
El bloque estándar de WordPress:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Por debajo del bloque WordPress:
# Compresión Gzip
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/css text/javascript application/javascript
</IfModule>
# Caché del navegador
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType text/css "access plus 1 month"
</IfModule>
# Desactivar listado de directorios
Options -Indexes
# Proteger archivos sensibles
<FilesMatch "\.(env|log|ini|bak|sql|conf)$">
Order allow,deny
Deny from all
</FilesMatch>
# Proteger wp-config.php
<Files wp-config.php>
Order allow,deny
Deny from all
</Files>
Toda esta configuración se puede generar con el generador htaccess en unos pocos clics.
.htaccess frente a httpd.conf
Si tienes acceso al servidor, desde el punto de vista del rendimiento es mejor escribir las reglas directamente en la configuración del host virtual, ya que Apache lee .htaccess en cada solicitud.
| Criterio | .htaccess | httpd.conf |
|---|---|---|
| Alcance | Por directorio | Servidor completo |
| Efecto | Inmediato | Tras reinicio |
| Permisos | Propietario del archivo | root |
| Rendimiento | Ligeramente inferior | Óptimo |
En hosting compartido, .htaccess suele ser la única opción. Con acceso completo al servidor, se recomienda usar httpd.conf siempre que sea posible.
Prueba siempre después de modificar
Tras cada edición de .htaccess, comprueba inmediatamente:
- Abre el sitio en el navegador y busca errores 500
- Revisa el registro de errores de Apache (
/var/log/apache2/error.log) - Prueba las redirecciones con
curl -I http://yourdomain.com - Guarda siempre una copia de seguridad antes de modificar
El código generado por el generador htaccess es sintácticamente correcto, lo que reduce considerablemente el riesgo de errores 500 por errores tipográficos. Con la configuración adecuada, mejorarás la seguridad y el rendimiento de tu sitio de una sola vez.