La mayoría de post-mortems de migración hablan de diseño o contenido. Lo que mata en silencio son las redirecciones: un 301 que falta, una cadena de tres plataformos anteriores o dos reglas peleando por la misma ruta vieja.
Esta guía trata de planificar el mapa de URLs y escribir reglas en el stack que ejecutas — Apache, Nginx, Cloudflare, Vercel, Next.js o Netlify. Cuando ya tienes la hoja old→new y necesitas sintaxis con detección de cadenas, usa el Generador de reglas de redirección en el navegador.
Empieza por el mapa, no por el archivo de config
Un mapa son dos columnas: cada URL vieja que importa y un solo destino. Importa tráfico orgánico, backlinks, anuncios, email o enlaces internos que conservas.
Construye la lista desde varias fuentes: Search Console, sitemap antiguo, analytics y URLs que el cliente guardó en PDF. Fusiona y deduplica. Ordena por valor para arreglar primero lo caro.
Cada fila debe ser un hop en el mundo final: ruta vieja → ruta nueva. Si la hoja tiene A→B y B→C, compón mentalmente A→C antes de escribir reglas. Las cadenas suman latencia y debilitan la señal al destino.
Evita el vertedero a la home. Productos a / le dicen a Google que no hay equivalente. Mapea parecido con parecido; usa 410 cuando el contenido desaparece de verdad.
Elige el código de estado una vez
Mudanzas permanentes — dominio, HTTPS, cambio de rutas del CMS — van con 301 o 308.
302 o 307 cuando la URL vieja puede volver. Un 302 accidental en migración permanente deja motores dudando del canonical.
Apache (.htaccess y httpd.conf)
Directivas Redirect legibles:
Redirect 301 /ruta-vieja /ruta-nuevaRewriteRule cuando necesitas regex o condiciones:
RewriteEngine On
RewriteRule ^ruta-vieja/?$ /ruta-nueva [R=301,L]Cuidado con reglas anchas: /productos también casa /productos-archive si no anclas.
Nginx
Dentro del bloque server:
rewrite ^/ruta-vieja/?$ /ruta-nueva permanent;Para 307/308, return dentro de location = suele ser más claro que abusar de rewrite.
Cloudflare
Bulk Redirects (CSV) para mapas grandes. Redirect Rules (expresiones) para excepciones. Comprueba si se preservan query strings.
Vercel y Next.js
vercel.json:
{ "redirects": [{ "source": "/vieja", "destination": "/nueva", "permanent": true }] }En Next.js, la misma forma en redirects() de next.config. Saber qué capa recibe el hostname evita doble redirección DNS + edge.
Netlify
_redirects en el directorio publicado:
/vieja /nueva 301Valida antes y después de DNS
Staging que imite el motor de producción. curl -I: un 3xx al destino final.
Tras el corte, comprobador masivo y cadenas en muestras. Search Console: 404 nuevos en rutas viejas = filas que faltan.
Fallos habituales
Bucles A→B→A. Orígenes duplicados con destinos distintos. Barra final en /pagina vs /pagina/. HTTP vs HTTPS y www en reglas de host. Query strings olvidadas en campañas.
Encaje con la checklist de migración
Las redirecciones van en medio: cuando conoces URLs nuevas y antes de dar por cerrado. Combina con la checklist SEO de migración de sitio.
El generador ayuda con sintaxis y validación del mapa que ya acordaste — no sustituye firmas de destinos ni analytics post-lanzamiento.
Publica redirecciones permanentes de un hop, pruébalas como usuario y como rastreador, y déjalas el tiempo suficiente para que bookmarks y backlinks caduquen. Eso es gran parte del SEO técnico de un cambio de URLs.