El archivo htaccess es uno de los archivos de configuración más potentes para tu página web. Tanto si quieres configurar redirecciones, mejorar la seguridad o mostrar páginas de error personalizadas, con este archivo de configuración puedes gestionarlo todo. En esta guía completa te explicamos qué hace este archivo y cómo se usa, y te damos ejemplos de código prácticos que puedes aplicar de inmediato.

¿Qué es un archivo htaccess y para qué se usa?

El archivo htaccess (nombre completo: .htaccess) es un archivo de configuración para el servidor web Apache. El punto delante del nombre indica que es un archivo oculto en los servidores Linux. El archivo contiene instrucciones que el servidor Apache ejecuta antes de cargar una página.

Con un archivo htaccess puedes, entre otras cosas:

  • Configurar redirecciones de URL: enviar automáticamente a los visitantes a las páginas nuevas
  • Restringir el acceso: bloquear o permitir determinadas direcciones IP
  • Protección con contraseña: proteger carpetas con una contraseña
  • Páginas de error personalizadas: mostrar tus propias páginas 404 y 500
  • Configurar la caché del navegador: mejorar los tiempos de carga con reglas de caché
  • Forzar HTTPS: redirigir las conexiones no seguras a HTTPS
  • Protección contra hotlinking: evitar que otras personas carguen tus imágenes en páginas ajenas

El archivo funciona por carpeta: un archivo htaccess en la carpeta raíz de tu página web se aplica a todos los archivos y subcarpetas, a menos que una subcarpeta tenga su propio archivo htaccess que sobrescriba las reglas.

¿Cómo se crea un archivo htaccess?

Crear un archivo htaccess es sencillo, pero hay que tener en cuenta algunos puntos:

Con un editor de texto

  1. Abre un editor de texto: usa Notepad++, VS Code u otro editor (no Word)
  2. Crea un archivo nuevo: empieza con un archivo vacío
  3. Guárdalo como ".htaccess": ten en cuenta que el nombre del archivo empieza por un punto y no tiene extensión
  4. Súbelo por FTP: coloca el archivo en la carpeta donde debe aplicarse

Desde el administrador de archivos de tu hosting

Muchos proveedores de hosting web ofrecen un administrador de archivos en su panel de control con el que puedes editar el archivo htaccess directamente. En cPanel lo encuentras en "File Manager".

Ten en cuenta que el archivo está oculto por defecto. En cPanel tienes que activar la opción "Show Hidden Files" para poder verlo.

Las reglas más importantes de htaccess, explicadas

A continuación tratamos las reglas más utilizadas que puedes aplicar en tu archivo de configuración. Cada regla se explica con un ejemplo de código que funciona.

Redirecciones 301 (redirección permanente)

Una redirección 301 le indica a los buscadores que una página se ha movido de forma permanente. Esto es importante para tu SEO, porque la autoridad de los enlaces se transfiere a la nueva URL.

Código de ejemplo para una única redirección:

Redirect 301 /oude-pagina.html /nieuwe-pagina.html

Para redirecciones más complejas se utiliza mod_rewrite:

RewriteEngine On
RewriteRule ^oude-pad/(.*)$ /nieuw-pad/$1 [R=301,L]

Forzar HTTPS

Redirigir automáticamente a todos los visitantes de HTTP a HTTPS:

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

Añadir o quitar WWW

Para usar siempre la versión con www:

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L]

Htaccess para un mejor rendimiento: caché y compresión

Un archivo htaccess bien configurado puede mejorar de forma notable el tiempo de carga de tu página web. Estas son las optimizaciones de rendimiento más importantes:

Configurar la caché del navegador

Al configurar la caché del navegador, el navegador de tu visitante no tiene que volver a descargar todos los archivos en cada visita:

# Configurar la caché por tipo de archivo
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType image/png "access plus 1 year"
ExpiresByType text/css "access plus 1 month"
ExpiresByType application/javascript "access plus 1 month"
ExpiresByType text/html "access plus 1 hour"
</IfModule>

Activar la compresión GZIP

La compresión reduce el tamaño de los archivos de tus páginas web entre un 60 y un 80 %, lo que mejora drásticamente el tiempo de carga:

<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml
AddOutputFilterByType DEFLATE text/css application/javascript
AddOutputFilterByType DEFLATE application/json application/xml
</IfModule>
OptimizaciónMejora esperadaDificultad
Caché del navegadorUn 20-40 % más rápido en visitas recurrentesFácil
Compresión GZIPArchivos un 60-80 % más pequeñosFácil
Keep-AliveConexión un 10-20 % más rápidaFácil
Desactivar ETagsMenos solicitudes innecesariasFácil

Mejorar la seguridad con htaccess

El archivo htaccess también es una herramienta potente para la seguridad de tu página web. Estas son las reglas de seguridad más importantes:

Desactivar el listado de directorios

Evita que los visitantes puedan ver el contenido de tus carpetas:

Options -Indexes

Bloquear el acceso a archivos sensibles

Protege los archivos de configuración y otros datos sensibles:

# Bloquear el acceso al propio .htaccess
<Files .htaccess>
Order Allow,Deny
Deny from all
</Files>

# Bloquear el acceso a wp-config.php (WordPress)
<Files wp-config.php>
Order Allow,Deny
Deny from all
</Files>

Bloquear direcciones IP

Bloquea direcciones IP concretas que generan tráfico no deseado:

Order Allow,Deny
Deny from 192.168.1.100
Deny from 10.0.0.0/24
Allow from all

Protección contra hotlinking

Evita que otras páginas web carguen tus imágenes directamente (lo que te cuesta ancho de banda):

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^https://(www\.)?example\.com [NC]
RewriteRule \.(jpg|jpeg|png|gif|webp)$ - [NC,F,L]

Configurar páginas de error personalizadas con htaccess

Las páginas de error por defecto son feas y poco útiles. Con el archivo htaccess puedes configurar tus propias páginas de error, que encajen con el diseño de tu página web:

ErrorDocument 400 /fouten/400.html
ErrorDocument 401 /fouten/401.html
ErrorDocument 403 /fouten/403.html
ErrorDocument 404 /fouten/404.html
ErrorDocument 500 /fouten/500.html
Código de errorSignificadoCausa habitual
400Bad RequestSolicitud no válida del navegador
401UnauthorizedAutenticación necesaria
403ForbiddenAcceso denegado por las reglas del servidor
404Not FoundLa página no existe o se ha eliminado
500Internal Server ErrorError en la configuración del servidor o en un script

Htaccess y WordPress: aplicaciones específicas

WordPress hace un uso intensivo del archivo htaccess para la estructura de enlaces permanentes. El bloque htaccess estándar de WordPress tiene este aspecto:

# 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

Coloca siempre tus propias reglas por encima o por debajo de este bloque, nunca en medio. WordPress puede sobrescribir el bloque cuando cambias los ajustes de enlaces permanentes.

Errores frecuentes en el archivo htaccess

Un error en tu archivo de configuración puede dejar toda tu página web inaccesible. Estos son los errores más habituales y cómo evitarlos:

  • Erratas en las reglas: una sola errata puede provocar un error 500. Revisa cada regla con atención
  • Bucles de redirección infinitos: las reglas de redirección que se contradicen pueden provocar un bucle. Prueba siempre después de hacer cambios
  • Sin copia de seguridad: haz siempre una copia antes de editar el archivo
  • Nombre de archivo incorrecto: el archivo debe llamarse exactamente ".htaccess", sin extensión
  • Reglas en el orden equivocado: el orden de las reglas importa. Las reglas específicas deben ir antes que las generales
  • No probar: prueba siempre tus cambios en un entorno de pruebas antes de ponerlos en producción

Htaccess frente a Nginx: ¿qué hacer si no usas Apache?

El archivo htaccess solo funciona en servidores web Apache. Si tu hosting web usa Nginx, necesitas otro enfoque. Nginx no lee los archivos htaccess, sino que utiliza un archivo de configuración central (nginx.conf).

La mayor parte de la funcionalidad de un archivo htaccess también está disponible en Nginx, pero la sintaxis es completamente distinta. Consulta con tu proveedor de hosting qué servidor web utiliza.

Preguntas frecuentes sobre el archivo htaccess

¿Puedo tener varios archivos de configuración?

Sí, puedes colocar un archivo htaccess propio en cada carpeta. Las reglas de un archivo en una subcarpeta tienen prioridad sobre las reglas de la carpeta raíz.

¿Cómo pruebo este archivo sin romper mi sitio en producción?

Usa un entorno de pruebas o un servidor de staging. También puedes probar la configuración de Apache con el comando apachectl configtest si tienes acceso al servidor.

Mi sitio muestra un error 500 después de editar el archivo. ¿Qué hago?

Restaura el archivo original desde tu copia de seguridad. Si no tienes ninguna copia de seguridad, renombra o elimina el archivo htaccess por FTP o desde el administrador de archivos. Después, tu sitio debería volver a funcionar.

¿Funciona este archivo de configuración en cualquier hosting?

Solo en servidores web Apache. La mayoría de los hostings compartidos usan Apache, pero compruébalo con tu proveedor. Los servidores LiteSpeed también son compatibles con este tipo de archivos de configuración.

Técnicas avanzadas de htaccess para usuarios con experiencia

Además de las aplicaciones básicas, el archivo de configuración ofrece posibilidades avanzadas para desarrolladores web y administradores de servidores con experiencia. Estas técnicas requieren más conocimientos, pero pueden marcar una gran diferencia en el rendimiento y la seguridad de tu página web.

Cabeceras Content Security Policy

Con las cabeceras de seguridad proteges a tus visitantes frente al cross-site scripting (XSS) y otros ataques. Añade estas cabeceras a tu archivo de configuración:

<IfModule mod_headers.c>
Header set X-Content-Type-Options "nosniff"
Header set X-Frame-Options "SAMEORIGIN"
Header set X-XSS-Protection "1; mode=block"
Header set Referrer-Policy "strict-origin-when-cross-origin"
</IfModule>

Reglas condicionales según el navegador

Puedes aplicar reglas específicas según el navegador o el dispositivo del visitante. Es útil para servir contenido optimizado a distintos usuarios. Usa RewriteCond con la variable HTTP_USER_AGENT para crear reglas específicas para cada navegador.

Limitación de solicitudes y protección contra fuerza bruta

Protege tu página de inicio de sesión frente a ataques de fuerza bruta limitando el número de solicitudes por dirección IP. Esto es especialmente importante en los sitios WordPress, donde la página wp-login.php suele ser objetivo de ataques automatizados. Combínalo con la protección con contraseña a través del archivo de configuración para añadir una capa extra de seguridad.

Configurar variables de entorno

Con SetEnv y SetEnvIf puedes definir variables de entorno que tu aplicación puede leer. Es útil para configurar distintos ajustes según el entorno, por ejemplo para distinguir entre producción y desarrollo.

El archivo htaccess es una herramienta imprescindible para cualquier propietario de una página web. Desde las redirecciones y la caché hasta la seguridad y la optimización del rendimiento, las posibilidades son infinitas. Con los ejemplos de este artículo puedes ponerte manos a la obra de inmediato para que tu página web sea más rápida, más segura y más fácil de encontrar.

No olvides hacer siempre una copia de seguridad antes de aplicar cambios, y prueba siempre las reglas nuevas en un entorno de pruebas. Con un archivo htaccess bien configurado sacas el máximo partido a tu hosting web y ofreces a tus visitantes la mejor experiencia.

¿Quieres saber más sobre las opciones de hosting y cómo sacar el máximo partido a la configuración de tu servidor? Consulta nuestra guía completa sobre hosting web, en la que tratamos todos los aspectos del hosting, incluidos la configuración del servidor y la optimización del rendimiento. Con la combinación adecuada de hosting y ajustes de servidor construyes una página web rápida, segura y fiable.

Htaccess: redirecciones avanzadas y reescritura de URL

Una de las aplicaciones más potentes del archivo htaccess es reescribir y redirigir URL. Es esencial para el SEO y para la experiencia de usuario.

Redirecciones 301 para SEO

Cuando cambias la estructura de URL de tu página web, tienes que configurar redirecciones 301 para informar a los buscadores de que la página se ha movido de forma permanente. Sin redirecciones pierdes el valor SEO acumulado de las URL antiguas y los visitantes ven un error 404. Una redirección 301 transfiere la mayor parte del valor de los enlaces a la nueva URL. Usa redirecciones específicas por página en lugar de reglas comodín para conseguir la redirección más precisa.

Reescritura de URL con mod_rewrite

El módulo mod_rewrite te permite reescribir URL sin que el visitante lo note. Con él creas URL legibles que valoran tanto los usuarios como los buscadores. Una URL como example.com/product.php?id=123 se reescribe como example.com/product/funda-smartphone. La directiva RewriteRule de tu archivo htaccess determina cómo se convierte la URL, mientras que RewriteCond establece las condiciones en las que se aplica la regla.

Reglas de redirección habituales de htaccess

ObjetivoTipoAplicación
De HTTP a HTTPSRedirección 301Forzar una conexión segura
De www a non-wwwRedirección 301Establecer la URL canónica
De la URL antigua a la nuevaRedirección 301Tras reestructurar el sitio
Añadir la barra final (trailing slash)Redirección 301Coherencia de URL
Redirección temporalRedirección 302Página de mantenimiento

Htaccess: seguridad y control de acceso

El archivo htaccess es una herramienta potente para proteger tu página web y restringir el acceso no autorizado a archivos sensibles.

Protección de directorios

Protege con contraseña, a través de htaccess, los directorios sensibles como tu panel de administración, las carpetas de configuración y las carpetas de subida de archivos. Combínalo con la restricción por IP para dar acceso a las interfaces de administración solo a determinadas direcciones IP. Bloquea también el listado de directorios para que los visitantes no puedan recorrer la estructura de tus carpetas. Estas sencillas medidas evitan que personas no autorizadas accedan a archivos que no están pensados para uso público.

Configurar la protección contra hotlinking

El hotlinking consiste en enlazar directamente archivos de tu servidor desde otras páginas web, de modo que consumen tu ancho de banda. Con htaccess puedes configurar una protección contra hotlinking que solo permita solicitudes de tu propio dominio y de fuentes de confianza, como los buscadores. Así ahorras ancho de banda y recursos del servidor. Configura una imagen alternativa que se muestre cuando alguien intente enlazar tus archivos de forma directa.

¿Quieres saber más sobre la seguridad de las páginas web? Lee nuestro artículo sobre cómo proteger tu página web para conocer más medidas de seguridad.

Htaccess: preguntas frecuentes y buenas prácticas

Al trabajar con el archivo htaccess surgen muchas de las mismas preguntas. A continuación respondemos a las más importantes y compartimos buenas prácticas para un uso seguro.

¿Afecta htaccess a la velocidad de la página web?

Sí, pero el impacto puede ser tanto positivo como negativo. Unas reglas de htaccess bien configuradas para la caché y la compresión mejoran la velocidad de forma notable. Demasiadas reglas, o reglas mal escritas, pueden ralentizar el servidor, porque Apache tiene que procesar el archivo htaccess en cada solicitud. En las páginas web con mucho tráfico es más eficiente colocar las reglas directamente en la configuración de Apache en lugar de en htaccess, pero para la mayoría de las páginas web el impacto es insignificante.

¿Puedo usar htaccess en Nginx?

No, el archivo htaccess es específico del servidor web Apache. Nginx utiliza otro sistema de configuración, basado en bloques de servidor en el archivo nginx.conf. Si pasas de Apache a Nginx, tienes que traducir tus reglas de htaccess a la sintaxis de Nginx. Existen conversores online que pueden traducir automáticamente las reglas más habituales, pero las configuraciones complejas requieren un ajuste manual.

Buenas prácticas para htaccess

  • Haz siempre una copia de seguridad antes de aplicar cambios en el archivo htaccess
  • Prueba cada cambio al instante cargando la página web en tu navegador después de guardar
  • Añade comentarios a cada regla o bloque para que más adelante sepas por qué se añadió una regla
  • Mantén el archivo compacto incluyendo solo las reglas necesarias
  • Usa reglas específicas en lugar de comodines amplios para evitar efectos no deseados
  • Comprueba si hay duplicados, porque las reglas contradictorias provocan un comportamiento impredecible

Htaccess: resumen y reglas esenciales

Con los conocimientos adecuados, el archivo htaccess es una herramienta imprescindible para configurar tu página web. Aquí resumimos las reglas esenciales que debería tener toda página web.

Configuración mínima de htaccess

Toda página web que se ejecute en un servidor Apache debería tener como mínimo estas configuraciones en el archivo htaccess. Una redirección 301 de HTTP a HTTPS para atender a todos los visitantes mediante una conexión segura. Cabeceras de caché del navegador para los archivos estáticos, con el fin de mejorar la velocidad de carga. Compresión GZIP para los archivos basados en texto, para reducir el tamaño de la transferencia. Protección contra el listado de directorios para evitar que los visitantes recorran la estructura de tus carpetas. Bloqueo del acceso a archivos sensibles como wp-config.php y el propio .htaccess.

Cuándo recurrir a ayuda profesional

Aunque muchas configuraciones de htaccess se pueden hacer por cuenta propia, hay situaciones en las que conviene recurrir a ayuda profesional. En reescrituras de URL complejas para páginas web grandes, con cientos de páginas, es fácil cometer un error. Al configurar reglas de seguridad avanzadas, un ajuste equivocado puede dejar tu página web inaccesible. Para resolver conflictos entre las reglas de htaccess y la configuración del CMS, la experiencia es valiosa. Un desarrollador web o tu proveedor de hosting puede ayudarte con estas configuraciones más complejas.

Htaccess: reglas de seguridad avanzadas

El archivo htaccess ofrece posibilidades potentes para proteger tu página web a nivel de servidor. Con el control de acceso basado en IP puedes bloquear direcciones IP concretas o, al contrario, dar acceso solo a determinadas direcciones a directorios sensibles como el panel de administración. La protección contra hotlinking evita que otras páginas web enlacen directamente a tus imágenes y consuman así tu ancho de banda. Configura páginas de error personalizadas a través del archivo htaccess para que los visitantes que lleguen a una página inexistente vean un mensaje de error útil, con navegación de vuelta a páginas que funcionan.

Htaccess y cabeceras de rendimiento

Usa el archivo htaccess para configurar las cabeceras HTTP relacionadas con el rendimiento. Las cabeceras Expires y Cache-Control determinan durante cuánto tiempo pueden guardar los navegadores los archivos en local. La cabecera Content-Security-Policy protege frente a los ataques de cross-site scripting. La cabecera X-Content-Type-Options evita el MIME-type sniffing. Si configuras correctamente estas cabeceras, mejoras tanto el rendimiento como la seguridad de tu página web sin tocar el código de la aplicación.

Probar y depurar htaccess

Los errores en el archivo htaccess pueden dejar toda tu página web inaccesible. Por eso, prueba siempre los cambios primero en un entorno de staging antes de pasarlos a producción. Usa probadores de htaccess online para validar tus reglas sin riesgo. Cuando se produzca un error, renombra temporalmente el archivo htaccess para comprobar si el problema está relacionado con él. Ten siempre a mano una copia de seguridad del archivo htaccess que funciona, para poder volver atrás rápidamente si hay problemas.