Un archivo .htaccess es un archivo de configuración que lee el servidor web Apache en cada carpeta de tu sitio. Sin tocar la configuración global del servidor, te deja controlar cómo responde tu web: redirigir URLs viejas a nuevas con redirects 301, forzar HTTPS, unificar el dominio en www o sin www, activar la compresión gzip y el cache del navegador para que cargue más rápido, agregar cabeceras de seguridad y bloquear el acceso a archivos privados como .env o .git. Es una de las herramientas más potentes del hosting compartido. Ojo con un detalle clave: el .htaccess es exclusivo de Apache. Si tu servidor es Nginx, este archivo se ignora por completo y tenés que escribir las reglas en nginx.conf. Antes de usarlo, confirmá con tu hosting que estás sobre Apache.
Para qué sirve un .htaccess
- Redirecciones 301: mudás una página sin perder el posicionamiento en Google.
- HTTPS obligatorio: nadie entra por http:// inseguro.
- www o no-www: evitás que Google vea dos versiones del mismo sitio.
- Velocidad: gzip achica los archivos y el cache evita descargas repetidas.
- Seguridad: bloqueás archivos sensibles y sumás cabeceras que frenan ataques comunes.
- Errores a medida: mostrás tu propia página 404 en vez de la fea de Apache.
Cómo funcionan las redirecciones
Para redirects simples de una ruta a otra alcanza con la directiva Redirect 301 /viejo /nuevo, que viene del módulo mod_alias y no necesita expresiones regulares. Cuando la lógica es más compleja (forzar HTTPS, sumar o quitar www, redirigir por patrón) entra mod_rewrite con RewriteCond y RewriteRule. Ahí sí usás regex, y el error más típico es olvidarse de escapar el punto: en una expresión regular, un punto suelto significa "cualquier carácter", así que para que represente un punto real hay que escribirlo como \\. con barra invertida.
Referencia: directivas .htaccess más usadas
| Directiva | Qué hace | Ejemplo |
|---|---|---|
RewriteEngine | Activa o desactiva el motor de reescritura de URLs. Va antes de cualquier RewriteRule. | RewriteEngine On |
RewriteCond | Agrega una condición que se evalúa antes de aplicar la RewriteRule que sigue. | RewriteCond %{HTTP_HOST} ^www\\.dominio\\.com$ [NC] |
RewriteRule | Define un patrón y a dónde reescribir o redirigir cuando coincide. | RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] |
Redirect 301 | Redirección permanente simple de una ruta a otra (mod_alias, sin regex). | Redirect 301 /viejo /nuevo |
ErrorDocument | Define una página personalizada para un código de error HTTP. | ErrorDocument 404 /404.html |
Header set | Agrega o reemplaza una cabecera HTTP en la respuesta (mod_headers). | Header set X-Frame-Options "SAMEORIGIN" |
ExpiresByType | Define cuánto tiempo cachea el navegador un tipo de archivo (mod_expires). | ExpiresByType image/png "access plus 1 year" |
Antes de subirlo
Hacé siempre una copia del .htaccess que ya tenías: si el nuevo trae un error de sintaxis, Apache devuelve un error 500 en todo el sitio, no en una sola página. Con la copia restaurás y volvés al instante. Subilo por FTP o desde el administrador de archivos de tu hosting a la raíz del sitio, y probá una URL vieja para confirmar que redirige bien.