Generador de .htaccess
Activa lo que necesites (redirecciones, HTTPS, cabeceras de seguridad, compresión, caché) y obtén un archivo .htaccess comentado para Apache 2.4, con avisos sobre los ajustes que podrían dejarte sin acceso.
- Apache 2.4
- Redirecciones + HTTPS
- Cabeceras de seguridad
- Funciona en tu navegador
Plantillas
Una plantilla ajusta todos los interruptores a la vez y conserva tus redirecciones personalizadas. Escrito para Apache 2.4; las partes que necesitan un módulo opcional van dentro de <IfModule> para que un módulo ausente no pueda romper el sitio.
Esta sección está desactivada, así que no se escribe nada de ella en el archivo.
Detrás de un proxy el servidor ve HTTP sin cifrar, así que la regla lee la cabecera X-Forwarded-Proto en su lugar. Elegir la configuración equivocada provoca un bucle de redirecciones.
Las direcciones antiguas con extensión redirigen a las limpias; los archivos se quedan donde están.
Envía a un único archivo de entrada todas las direcciones que no son un archivo o una carpeta reales.
Usa / para la raíz del sitio o, por ejemplo, /blog/. En Laravel y Symfony el archivo va en la carpeta public.
Redirecciones personalizadas
Todavía no hay redirecciones personalizadas.
Ruta redirige la ruta y todo lo que cuelga de ella. Expresión regular compara la ruta completa empezando por /; usa $1, $2 en el destino para los grupos capturados. 301 y 308 son permanentes, 302 y 307 temporales, y 410 indica a los buscadores que la página ha desaparecido definitivamente.
Una por línea o separadas por comas. IPv4, IPv6 y rangos como 198.51.100.0/24.
Esta sección está desactivada, así que no se escribe nada de ella en el archivo.
Guarda este fragmento como un archivo .htaccess propio dentro de cada carpeta de subida, por ejemplo /wp-content/uploads/ o /uploads/. Así los scripts subidos ya no se pueden ejecutar.
Una por línea o separadas por comas. IPv4, IPv6 y rangos como 198.51.100.0/24.
Uno por línea. Basta con una parte del nombre; no se distingue entre mayúsculas y minúsculas.
Opcional, incluidos sus subdominios.
Ruta opcional de una imagen que se muestra en su lugar. Déjalo vacío para responder 403.
El archivo de contraseñas se crea aparte, con el comando htpasswd o con la herramienta de contraseñas de tu panel de hosting, y debería guardarse fuera de la carpeta web pública. Este generador nunca pide ni crea contraseñas.
Esta sección está desactivada, así que no se escribe nada de ella en el archivo.
HSTS no se puede deshacer rápidamente: hasta que se agote el tiempo, los visitantes no podrán acceder al sitio por HTTP de ninguna manera. Empieza con 5 minutos. Preload pide a los navegadores que incluyan tu dominio de forma fija: retirarlo lleva meses y todos los subdominios deben funcionar por HTTPS.
frame-ancestors es la forma moderna; X-Frame-Options funciona también en navegadores muy antiguos.
Qué parte de la dirección se transmite cuando un visitante sigue un enlace.
Avanzado. Deja ambas sin definir salvo que sepas que tu sitio las necesita.
Esta sección está desactivada, así que no se escribe nada de ella en el archivo.
Las fuentes siempre se guardan en caché durante un año. Usa un año e «immutable» solo cuando los nombres de archivo cambien con cada actualización, por ejemplo app.3f9a1c.js.
Esta sección está desactivada, así que no se escribe nada de ella en el archivo.
Páginas de error personalizadas
Las rutas empiezan por /. Deja un campo vacío para conservar la página estándar del servidor.
Uno por línea, con esquema y sin ruta: https://app.example.com
Estas líneas solo funcionan con mod_php. Con PHP-FPM o FastCGI, la configuración habitual en el hosting moderno, una línea php_value suelta provoca un error 500; por eso el bloque va dentro de <IfModule>. En ese caso, cambia los valores en .user.ini o en el panel de hosting.
Uno por línea. Basta con una parte del nombre; no se distingue entre mayúsculas y minúsculas.
.htaccess
Activa una sección para crear el archivo.
Haz primero una copia de seguridad del .htaccess existente. Un solo error de sintaxis o un módulo ausente hace que todas las páginas respondan «500 Internal Server Error»; si ocurre, vuelve a poner el archivo antiguo. Después de subirlo, prueba la página de inicio, una página interior y una redirección.
El nombre del archivo debe ser exactamente .htaccess. Algunos navegadores y móviles eliminan el punto inicial o no pueden guardar un nombre así: en ese caso, descarga htaccess.txt y cámbiale el nombre en el servidor.
Comprobaciones
Cómo generar un archivo .htaccess
Cada interruptor añade un bloque al archivo.
- 1
Elige una plantilla o empieza en blanco
WordPress recomendado, Sitio estático, Laravel, Aplicación de una sola página, Refuerzo de seguridad o Velocidad ajustan todos los interruptores de una vez. Tus redirecciones personalizadas se conservan.
- 2
Activa secciones y completa los datos
Redirecciones y URL, seguridad, cabeceras de seguridad, rendimiento y otros ajustes. El archivo y la lista de comprobaciones se actualizan sobre la marcha.
- 3
Haz una copia, sube y prueba
Copia o descarga el archivo, guarda una copia del anterior, súbelo a la carpeta a la que deba aplicarse y prueba la página de inicio, una página interior y una redirección.
Lo que puede hacer el archivo generado
Los bloques que necesitan un módulo opcional van dentro de <IfModule>.
Redirecciones y URL limpias
Fuerza HTTPS, añade o quita www, barras finales y extensiones de archivo, traslada un dominio antiguo y añade tus propias redirecciones por ruta o por expresión regular con 301, 302, 307, 308 o 410.
Compatible con proxy y CDN
Detrás de Cloudflare o de un balanceador de carga, la regla de HTTPS lee la cabecera <code>X-Forwarded-Proto</code>, lo que evita el típico bucle de redirecciones.
Control de acceso
Protección con contraseña, listas de direcciones IP permitidas o bloqueadas, user agents bloqueados, protección contra hotlinking de imágenes y 404 para archivos que empiezan por punto, copias de seguridad y archivos de configuración.
Cabeceras de seguridad
HSTS, X-Content-Type-Options, protección de marcos, Referrer-Policy, Permissions-Policy y una Content-Security-Policy de partida que puede funcionar primero en modo report-only.
Rendimiento
Compresión Gzip y Brotli, tiempos de caducidad por tipo de archivo con Cache-Control, tipos MIME correctos para formatos modernos y eliminación opcional de los ETag.
Comprobaciones antes de subir
Señala bucles de redirección, una regla por IP o un modo de mantenimiento que te dejarían sin acceso, direcciones no válidas, riesgos de la precarga de HSTS y líneas de PHP que fallan con PHP-FPM.
Privado por diseño
Todo funciona en tu navegador. Lo que escribes, pegas o abres no se envía a ningún servidor.
Gratis y sin registro
Sin cuenta, sin límites y sin marca de agua: en el móvil, la tableta o el ordenador.
Cómo funciona .htaccess y cómo evitar un error 500
Un archivo .htaccess es un archivo de configuración por carpeta del servidor web Apache. Apache lo lee en cada petición y aplica sus directivas a esa carpeta y a todo lo que contiene, de modo que puedes cambiar redirecciones, cabeceras y reglas de acceso sin tocar la configuración principal del servidor. Solo funciona si el proveedor lo permite mediante AllowOverride, algo habitual en el alojamiento compartido. Los servidores LiteSpeed entienden la mayoría de las mismas directivas. Nginx no lee en absoluto los archivos .htaccess.
La mayoría de las reglas dependen de módulos: mod_rewrite para las redirecciones y las URL limpias, mod_headers para las cabeceras de seguridad, y mod_deflate y mod_expires para la compresión y la caché. Este generador escribe la sintaxis de Apache 2.4, como Require all denied en lugar del antiguo Deny from all, y enumera los módulos que usa el archivo. El orden importa: las redirecciones van antes de un controlador frontal como el bloque de WordPress; de lo contrario, la aplicación responde primero y la redirección nunca se ejecuta.
Un solo error de sintaxis o una sola directiva que el proveedor no permita hace que todas las páginas respondan «500 Internal Server Error». Guarda una copia del archivo que funciona y restáurala si ocurre. Las trampas clásicas son los bucles de redirección (forzar HTTPS detrás de un proxy con la regla estándar, o una regla de barra final que contradice al CMS) y un 301 que los navegadores guardan en caché durante mucho tiempo, así que prueba primero las redirecciones nuevas como 302. Trata HSTS con el mismo cuidado: empieza con una duración corta antes de aumentarla.
Códigos de estado de redirección en .htaccess
| Código | Significado | Úsalo para |
|---|---|---|
| 301 | Movido permanentemente | Una página o un dominio que se ha trasladado de forma definitiva; los buscadores transfieren la dirección antigua a la nueva |
| 302 | Encontrado (temporal) | Traslados breves y para probar una regla antes de hacerla permanente |
| 307 | Temporal, conserva el método | Redirecciones temporales de formularios y llamadas a API, porque POST sigue siendo POST |
| 308 | Permanente, conserva el método | Redirecciones permanentes de formularios y endpoints de API |
| 410 | Ya no existe (Gone) | Contenido que se eliminó a propósito y que no va a volver |
Consejos
- Después de subirlo, sigue cada redirección salto a salto con el Comprobador de redirecciones: una cadena de varias redirecciones debería reducirse a una sola.
- Antes de forzar HTTPS o activar HSTS, confirma con el Comprobador de SSL que el certificado cubre todos los nombres de host.
- Comprueba con el Comprobador de estado HTTP que las cabeceras de seguridad y de caché llegan de verdad.
- Si tu móvil o tu navegador no pueden guardar un archivo cuyo nombre empieza por un punto, descarga
htaccess.txty cámbiale el nombre a.htaccessen el servidor.
Preguntas frecuentes
¿No encuentras tu respuesta? Escríbenos: respondemos rápido.
¿Dónde se coloca el archivo .htaccess?
En la carpeta a la que deba aplicarse: normalmente la raíz de documentos del sitio, que suele llamarse public_html o www. Las reglas se aplican también a todas las subcarpetas. El nombre del archivo es exactamente .htaccess, con el punto inicial y sin extensión.
¿Cómo redirijo de HTTP a HTTPS con .htaccess?
Activa «Forzar HTTPS». El generador escribe una regla de mod_rewrite que envía todas las peticiones http:// a https:// con un 301. Si el sitio está detrás de Cloudflare o de otro proxy, elige esa configuración de servidor; de lo contrario, la regla entra en bucle.
¿Por qué aparece un 500 Internal Server Error después de subir el archivo?
El archivo contiene una directiva que el servidor no acepta: un error de sintaxis, un módulo que no está cargado o un ajuste que el proveedor no ha permitido. Restaura el archivo anterior y añade después las secciones de una en una. El registro de errores del servidor indica la línea exacta.
¿Funciona .htaccess en Nginx?
No. Nginx no tiene archivos de configuración por carpeta; las mismas reglas deben escribirse en la configuración del servidor Nginx. .htaccess funciona en Apache y, con la mayoría de las directivas, en LiteSpeed.
¿Un archivo .htaccess ralentiza mi sitio web?
Un poco. Apache busca el archivo en cada carpeta de la ruta en cada petición. En sitios normales el coste es insignificante y mucho menor que lo que se gana con la compresión y la caché. Si controlas el servidor, las mismas reglas en la configuración principal son más rápidas.
¿Se envían mis datos a un servidor?
No. La herramienta funciona por completo en tu navegador. Lo que introduces no se sube, no se registra y no se guarda en nuestros servidores.
Más herramientas SEO y web gratuitas
Genera etiquetas y archivos, comprueba códigos de estado, redirecciones, DNS y certificados: gratis y sin cuenta.