Generador de redirección Htaccess

Cada vez que migras un blog, cambias tu esquema de URL o consolidas páginas antiguas, el .htaccess de Apache se encarga de la limpieza. Este generador convierte un simple mapeo de origen → destino en las directivas RewriteRule correctas con las banderas adecuadas, listo para ser colocado en el archivo .htaccess del sitio.

Cómo generar reglas de redirección

  1. 1

    Elige el tipo de redirección

    301 permanente para movimientos seguros para SEO, 302 temporal para pruebas A/B y redirecciones estacionales.

  2. 2

    Ingresa origen y destino

    Rutas exactas o patrones regex: la ruta antigua se convierte en el patrón RewriteRule y la nueva URL en el destino de la redirección.

  3. 3

    Revisa las banderas

    Cada regla recibe la bandera correcta, `[R=301,L]` o `[R=302,L]`, para que el bloque funcione con mod_rewrite sin retoques.

  4. 4

    Copia las directivas

    El bloque generado va dentro de la sección `<IfModule mod_rewrite.c>` de .htaccess.

directivas mod_rewrite vs mod_alias

Apache ofrece dos módulos para redirecciones. Elige según la complejidad de la regla.

Guía de decisión

Requisito Usar Ejemplo
URL antigua exacta → URL nueva exacta Redirect Redirect 301 /old /new
Prefijo comodín RedirectMatch RedirectMatch 301 ^/blog/(.*)$ /articles/$1
Coincidencia de cadena de consulta RewriteRule Ver abajo
Forzar HTTPS RewriteRule RewriteCond %{HTTPS} off + regla
Condicional (navegador, cookie) RewriteRule Con RewriteCond

Ejemplo: forzar HTTPS con www

RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Ejemplo: mover /blog/post-123 a /articles/post-123

RewriteEngine On
RewriteRule ^blog/(.*)$ /articles/$1 [L,R=301]

Banderas que verás

  • L, último, no continuar procesando reglas adicionales.
  • R=301 o R=302, redirigir con ese código de estado.
  • NC, sin distinción entre mayúsculas y minúsculas.
  • QSA, añadir la cadena de consulta original a la nueva URL.
  • NE, no volver a codificar caracteres especiales en el destino.

Errores comunes

  • Olvidar RewriteEngine On, sin esto, ninguna RewriteRule tiene efecto.
  • Usar 302 por defecto, Google lo trata como temporal, por lo que la URL antigua sigue posicionándose.
  • Redirecciones encadenadas (antigua → intermedia → final), siempre apunta a un solo salto; cada salto adicional pierde autoridad de enlace y añade latencia.

Preguntas frecuentes

Usa 301 para movimientos permanentes: migración de sitio, cambio de slug de URL, actualización a HTTPS. Usa 302 solo para situaciones temporales, como redirigir a una página de mantenimiento o una división A/B. Los motores de búsqueda transfieren señales de clasificación en 301, no de manera confiable en 302.

La causa más común es olvidar la barra inicial en el patrón. En RewriteRule, el patrón coincide con la ruta sin la barra inicial (por ejemplo, ^blog/). En Redirect (mod_alias), el patrón comienza con una barra (/blog). No mezcles las dos convenciones.

Sí, usa RewriteCond %{QUERY_STRING} ^id=123$ antes de una RewriteRule. Redirect simple no lee la cadena de consulta; solo RewriteRule puede coincidir con ella.

Sí, en la siguiente solicitud, Apache vuelve a leer .htaccess por cada solicitud. No se necesita reiniciar el servidor. Si no sucede nada, verifica que AllowOverride All esté configurado en el vhost para el directorio.

Herramientas relacionadas

Herramienta disponible en otros idiomas