.htaccess para WordPress: los 10 fragmentos más útiles (con generador)
Cada guía técnica sobre WordPress asume en algún punto que sabes qué añadir a tu .htaccess, y muy pocas te enseñan el código exacto. Esta es una chuleta de .htaccess wordpress: qué es este archivo, qué no debes tocar nunca y los diez fragmentos que de verdad se usan en producción, listos para copiar o para generar con un clic.
Tarde o temprano acabas ahí: un tutorial te dice "añade esto a tu .htaccess" y te deja solo con la mitad de la información. Este artículo reúne los diez fragmentos de .htaccess wordpress que de verdad se usan en sitios en producción, explicados uno a uno, con el código exacto y sin dar por hecho que ya sabes de qué archivo estamos hablando.
Qué es el archivo .htaccess
El .htaccess es un archivo de configuración de texto plano que vive en la carpeta raíz de tu instalación de WordPress -al mismo nivel que wp-config.php. Lo lee el servidor web en cada petición, y te permite cambiar comportamientos como redirecciones, caché o cabeceras HTTP sin tocar la configuración global del servidor ni reiniciar nada.
Aquí está el matiz que casi nadie explica: el .htaccess solo funciona en Apache y, con las directivas más comunes, en LiteSpeed, que lo lee de forma compatible. Si tu hosting corre sobre Nginx, este archivo simplemente no existe ni se procesa; las mismas reglas hay que definirlas en el bloque server de nginx.conf, con una sintaxis distinta. Antes de copiar cualquier fragmento de este artículo, comprueba con tu proveedor de hosting qué servidor web usas. La mayoría del hosting compartido orientado a WordPress sigue siendo Apache o LiteSpeed, así que en la práctica esto afecta a una minoría, pero es la primera pregunta que hay que responder.
El bloque propio de WordPress: no lo toques
Si abres el .htaccess de cualquier instalación de WordPress con permalinks bonitos activados, vas a encontrar un bloque como este, normalmente al principio del archivo:
# BEGIN WordPress
# The directives (lines) between "BEGIN WordPress" and "END WordPress" are
# dynamically generated, and should only be modified via WordPress filters.
# Any changes to the directives between these markers will be overwritten.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Ese bloque es el que hace que tus URLs con estructura bonita -/blog/mi-articulo/ en vez de /?p=123- lleguen todas a index.php, que es quien decide qué mostrar. WordPress lo regenera automáticamente cada vez que guardas los ajustes de enlaces permanentes, así que si lo editas a mano, tu cambio puede desaparecer sin aviso en el próximo guardado. La norma es sencilla: todo lo que añadas tú va fuera de este bloque, normalmente antes de # BEGIN WordPress.
Móntalo con clics: generador gratuito de .htaccess
Si prefieres no escribir las reglas a mano, nuestro generador arma un archivo comentado con estos mismos módulos: marcas casillas y copias o descargas el resultado, sin subir nada a ningún servidor.
Los 10 fragmentos más útiles de .htaccess para WordPress
Todos los fragmentos siguientes van fuera del bloque # BEGIN WordPress / # END WordPress, normalmente antes. Puedes copiarlos directamente o generarlos todos juntos con el generador de .htaccess, que además evita errores de sintaxis al combinarlos.
1. Forzar HTTPS
Redirige cualquier visita por http a la versión https, para que el candado del navegador aparezca siempre, sin depender de que cada enlace interno ya apunte a https.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>
2. Unificar www o sin www
Elige una única versión de tu dominio -con o sin www.- y redirige la otra hacia ella. Sin esto, Google puede indexar ambas como sitios distintos y diluir tu posicionamiento entre las dos.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^ %{REQUEST_SCHEME}://%1%{REQUEST_URI} [L,R=301]
</IfModule>
3. Redirecciones 301
Para cuando cambias la URL de una página o fusionas contenido. Si gestionas más de un puñado, un plugin como Linkjet resulta más manejable que editar .htaccess a mano -pero para un par de reglas puntuales, esto basta:
<IfModule mod_alias.c>
# Redirige rutas antiguas a su nueva URL
Redirect 301 /pagina-antigua https://tudominio.com/pagina-nueva
</IfModule>
4. Caché del navegador
Le dice al navegador cuánto tiempo puede reutilizar imágenes, CSS y JS sin volver a pedirlos al servidor, lo que acelera las visitas repetidas de un mismo usuario.
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType text/css "access plus 1 month"
ExpiresByType application/javascript "access plus 1 month"
ExpiresByType image/png "access plus 1 year"
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType image/webp "access plus 1 year"
ExpiresByType font/woff2 "access plus 1 year"
</IfModule>
5. Compresión GZIP
Comprime los archivos de texto -HTML, CSS, JS, JSON- antes de enviarlos, así que llegan más rápido al navegador sin cambiar nada visualmente.
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml
AddOutputFilterByType DEFLATE application/javascript application/json
AddOutputFilterByType DEFLATE image/svg+xml
</IfModule>
6. Cabeceras de seguridad
Un puñado de cabeceras HTTP que reducen la superficie de ataque de tu WordPress sin instalar ningún plugin adicional: evitan que el navegador adivine tipos de archivo, bloquean que tu web se cargue dentro de un iframe ajeno y limitan qué datos del navegador puede pedir cualquier script.
<IfModule mod_headers.c>
Header always set X-Content-Type-Options "nosniff"
Header always set X-Frame-Options "SAMEORIGIN"
Header always set Referrer-Policy "strict-origin-when-cross-origin"
Header always set Permissions-Policy "geolocation=(), microphone=(), camera=()"
</IfModule>
7. Página 404 personalizada
WordPress ya sirve una plantilla 404 propia con el tema activo, pero si tu sitio devuelve errores 404 antes de que WordPress llegue a cargarse -por ejemplo con archivos estáticos-, esta línea define qué página se muestra en su lugar.
ErrorDocument 404 /404.html
8. Protección contra hotlinking
Impide que otras webs carguen tus imágenes directamente desde tu servidor -gastando tu ancho de banda- enlazándolas en su propio HTML. La regla deja pasar tus propias páginas y bloquea al resto.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^https?://(www\.)?tudominio\.com [NC]
RewriteRule \.(jpe?g|png|gif|webp|svg)$ - [F,NC,L]
</IfModule>
9. Desactivar el listado de directorios
Sin esta línea, cualquiera que abra en el navegador una carpeta de tu servidor sin un archivo index.php dentro -por ejemplo una carpeta de subidas mal configurada- ve la lista completa de sus archivos. Una línea la cierra.
Options -Indexes
10. Bloquear el acceso a dotfiles
Archivos como .env, .git o copias de seguridad con nombres que empiezan por punto no deberían ser accesibles desde el navegador nunca. Esta regla los bloquea todos, salvo la carpeta .well-known, que necesitan servicios externos como los certificados SSL.
<IfModule mod_rewrite.c>
RewriteCond %{REQUEST_URI} "!(^|/)\.well-known/" [NC]
RewriteRule "(^|/)\." - [F]
</IfModule>
Cómo probar el archivo sin arriesgar tu web en producción
Añade los fragmentos de uno en uno, no todos de golpe, y comprueba tu web en el navegador después de cada guardado. Si algo falla, sabrás exactamente cuál fue la última línea añadida. Si tu hosting ofrece un entorno de staging, pruébalo ahí primero -es el lugar ideal para combinar estos cambios con otras mejoras de rendimiento, como las que cubrimos en nuestra guía para acelerar WordPress.
Móntalo con clics: generador gratuito de .htaccess
Si editar código no es lo tuyo, el generador combina estos diez módulos por ti, te avisa antes de generar nada vacío y todo corre en tu navegador, sin subir nada a ningún servidor.
Redirecciones sin tocar el servidor
Si lo que más usas del .htaccess son las redirecciones 301, Linkjet te da lo mismo desde el escritorio de WordPress: cinco tipos de código, monitor de errores 404 y estadísticas de clics locales, todo gratuito.
Preguntas frecuentes
¿Qué es el archivo .htaccess en WordPress?
Es un archivo de configuración de texto plano en la raíz de tu instalación que el servidor web lee en cada petición. Permite definir redirecciones, caché, cabeceras de seguridad y otras reglas sin tocar la configuración global del servidor. Solo funciona en servidores Apache y, de forma compatible, en LiteSpeed.
¿Existe el .htaccess en Nginx?
No. Nginx no lee archivos .htaccess bajo ningún concepto, ni siquiera si lo copias a la raíz del sitio. Las mismas reglas -redirecciones, caché, cabeceras- hay que definirlas directamente en el bloque server de nginx.conf, con una sintaxis distinta a la de Apache. Si no sabes qué servidor usa tu hosting, pregúntale a tu proveedor antes de intentar aplicar estos fragmentos.
¿Puedo editar el bloque # BEGIN WordPress sin problema?
No es recomendable. Ese bloque lo genera y regenera WordPress automáticamente cada vez que guardas los ajustes de enlaces permanentes, así que cualquier cambio manual dentro de él puede desaparecer sin aviso. Añade siempre tus propias reglas fuera de ese bloque, normalmente justo antes.
¿Qué pasa si me equivoco al editar el .htaccess?
Un error de sintaxis en este archivo -una etiqueta sin cerrar, una directiva mal escrita- puede tumbar toda la web con un error 500, visible para cualquier visitante. Por eso conviene hacer siempre una copia del archivo actual antes de tocarlo: si algo sale mal, subir de vuelta la copia por FTP soluciona el problema en segundos.
¿Es mejor usar estos fragmentos o un plugin?
Depende de qué necesites. Para reglas puntuales que deben sobrevivir aunque WordPress falle -como forzar HTTPS o bloquear dotfiles-, el .htaccess es la opción más fiable. Para tareas que cambian con frecuencia, como gestionar decenas de redirecciones 301, un plugin como Linkjet ofrece una vista centralizada y evita el riesgo de romper la sintaxis del archivo.
Si tu necesidad principal son las redirecciones, la guía completa está en redirecciones 301 en WordPress. Y si el objetivo es rendimiento general del sitio, no solo caché y GZIP, revisa nuestra guía para acelerar WordPress.