El archivo .htaccess (HyperText Access) es el centro de mando de los servidores Apache. Su comportamiento es jerárquico: una regla aquí afecta al directorio actual y a todas sus subcarpetas.
Este archivo no es solo configuración técnica; es el punto de cruce entre la Experiencia de Usuario (WPO) y la Preservación de Activos Digitales (SEO). Una configuración correcta aquí reduce el rebote, mejora la velocidad de carga (Core Web Vitals) y protege tu autoridad durante migraciones.
Advertencia (Precaución Extrema)
Un error de sintaxis (incluso un espacio mal puesto) en el .htaccess puede tirar abajo todo tu sitio web (Error 500). Haz siempre una copia de seguridad antes de editarlo.
Gestión de tráfico y autoridad (RewriteEngine)
El uso más crítico para el negocio. Aquí definimos cómo se transfieren los activos de autoridad (PageRank) y cómo se presentan las URLs.
Redirección 301 (El salvavidas de las migraciones)
Si cambias de dominio o reestructuras tu sitio, el 301 es obligatorio. Le dice a Google: “El negocio se mudó, transfiere toda la reputación antigua a esta nueva dirección”. Sin esto, pierdes años de posicionamiento en un día.
RewriteEngine On# Redirigir todo el tráfico antiguo al nuevo dominio manteniendo la rutaRewriteRule ^(.*)$ https://nuevodominio.cl/$1 [R=301,L]URLs amigables (Conversión y Confianza)
Transforma parámetros técnicos sucios en rutas limpias que aumentan el CTR en buscadores.
- Caso Simple: De
proyectos.phpa/proyectos.
RewriteRule ^proyectos/?$ projects.php [NC,L]- Caso E-commerce (Complejo):
De
index.php?cat=zapatos&id=nikea/tienda/zapatos/nike/.
RewriteRule ^tienda/([^/]*)/([^/]*)/$ /index.php?cat=$1&id=$2 [L]Higiene Digital: WWW y HTTPS
La duplicidad diluye tu SEO. Debes forzar una sola versión de la verdad.
RewriteEngine On
# 1. Forzar HTTPS (Seguridad y Confianza)RewriteCond %{HTTPS} offRewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# 2. Forzar sin-www (o con-www, tú eliges, pero sé consistente)RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]RewriteRule ^(.*)$ https://%1/$1 [R=301,L]Gestión de “Trailing Slash” (La barra final)
Google ve site.com/pagina y site.com/pagina/ como dos URLs distintas (Contenido Duplicado). Decide una estrategia y fuérzala.
Aquí forzamos a quitar la barra:
RewriteBase /RewriteRule ^(.*)/$ /$1 [L,R=301]Aceleración de Ingresos (WPO)
La velocidad no es un lujo, es una métrica de retención. Cada segundo de retraso reduce la conversión un 7%.
Compresión Gzip (El .zip del servidor)
Comprime el código (HTML, CSS, JS) antes de enviarlo por el cable. Reduce el peso de la página hasta en un 70%.
<IfModule mod_deflate.c> AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript application/json</IfModule>Browser Caching (La mejor petición es la que no se hace)
Le dice al navegador del usuario: “Ya bajaste el logo y los estilos ayer, no los pidas de nuevo hasta el próximo mes”. Ahorra ancho de banda y carga instantánea para usuarios recurrentes.
<IfModule mod_expires.c> ExpiresActive On # Imágenes: Larga duración (1 año) ExpiresByType image/jpg "access plus 1 year" ExpiresByType image/jpeg "access plus 1 year" ExpiresByType image/png "access plus 1 year" ExpiresByType image/webp "access plus 1 year" # CSS y JS: Media duración (1 mes) ExpiresByType text/css "access plus 1 month" ExpiresByType application/javascript "access plus 1 month"</IfModule>Habilitar Keep-Alive
Permite bajar múltiples archivos por una misma “tubería” TCP, en lugar de abrir y cerrar una conexión por cada imagen. Reduce drásticamente la latencia (TTFB).
<ifModule mod_headers.c> Header set Connection keep-alive</ifModule>Seguridad y Control Corporativo
Headers de Seguridad (Modern Defense)
No dependas solo de plugins. Inyecta seguridad a nivel de servidor para proteger a tus usuarios.
<IfModule mod_headers.c> # Evita que otros sitios incrusten tu web en un iframe (Clickjacking) Header always append X-Frame-Options SAMEORIGIN # Protección contra ataques XSS básicos Header set X-XSS-Protection "1; mode=block" # Fuerza al navegador a usar HTTPS en el futuro (HSTS) Header set Strict-Transport-Security "max-age=31536000; includeSubDomains"</IfModule>Evitar indexación quirúrgica (X-Robots-Tag)
A veces quieres que el PDF sea accesible si tienes el link, pero no quieres que aparezca en Google. El robots.txt es demasiado general; el .htaccess es un francotirador.
<Files ~ "\.(pdf|doc|docx)$"> Header set X-Robots-Tag "noindex, noarchive"</Files>Bloquear listado de directorios
Si un usuario entra a tusitio.com/imagenes/ y no hay un index.html, Apache por defecto lista todos tus archivos. Esto es un riesgo de seguridad masivo.
Options -IndexesHack: “Modo Mantenimiento VIP”
Cuando el sitio se cae o necesitas hacer un deploy crítico, poner una página de “En Construcción” suele matar el acceso a todos, incluidos los desarrolladores y el equipo de QA.
Este script redirige a todo el mundo a una página de mantenimiento (con código 503 para que Google sepa que es temporal y no desindexe), EXCEPTO a tu oficina o tu IP de casa.
RewriteEngine OnRewriteBase /
# IP de la Oficina (Desarrolladores) - ¡Cámbiala por la tuya!RewriteCond %{REMOTE_ADDR} !^123\.45\.67\.89$# IP de Casa (Líder del proyecto)RewriteCond %{REMOTE_ADDR} !^98\.76\.54\.32$
# Si NO es ninguna de las IPs de arriba, y NO están pidiendo la imagen de mantenimientoRewriteCond %{REQUEST_URI} !^/mantenimiento\.html$RewriteCond %{REQUEST_URI} !^/logo-empresa\.png$
# Redirigir a Mantenimiento con Header 503 (Service Unavailable)RewriteRule ^(.*)$ /mantenimiento.html [R=503,L]El valor: Permites que el equipo técnico arregle el sitio en producción viendo los cambios en tiempo real, mientras el público y Google ven un aviso profesional de “Volvemos en breve”.