Blog

regex

Entendiendo las redirecciones y expresiones regulares

22:19 23 octubre in Tutoriales
3 Comments
26

Incluso para los desarrolladores web con experiencia, el aprendizaje de cómo implementar redirecciones 301 con expresiones regulares puede ser un agujero negro de confusión, frustración y bucles infinitos.

Las expresiones regulares no son sólo una lengua nueva, también son un lenguaje nuevo que es un poco diferente de contexto en contexto. Por ejemplo, se puede utilizar en PHP, pero son un poco diferentes en JavaScript, y también diferente cuando se trata de otras redirecciones. Añadir a la mezcla que esto no es algo que la mayoría de los desarrolladores tienen que hacer sobre una base diaria, y se termina con un montón de copiar y pegar, por ensayo y error, y un proceso que es generalmente más largo y difícil de lo que realmente debe ser.

Hoy en día, podemos concentrarnos exclusivamente en la construcción de redirecciones 301 efectivas al detallar un puñado de expresiones regulares comunes y flexibles. Usted podría construir teóricamente un sistema similar de redirecciones con texto plano (es decir, sin expresiones regulares), pero este método le permite lograr lo mismo con mucho menos entrada de datos, y de una manera que puede cubrir un número infinito de direcciones URL.

El plugin «Redirection» para WordPress

Usted ya sabe que la redirección de antiguas URLs no utilizadas a las nuevas páginas de su sitio es crucial para fines de SEO, lo que garantiza que cualquier valor de búsqueda en manos de esas viejas páginas sean transferidas a sus homólogos de nuevo. Cuando se construye un nuevo sitio, a menudo se necesita redirigir las páginas en masa. También es algo probable que necesite hacerlo de vez en cuando durante la gestión de un sitio existente, por ejemplo, cuando se elimina o se cambia el nombre de una página.

Hay muchas maneras de abordar las redirecciones, pero el más simple y más fácil de manejar es el plug-in Redirection de John Godley. (Tenga en cuenta que hay otros plug-in con nombres similares, así que asegúrese de agarrar éste.) Aunque lejos de ser perfecto, se trata de una herramienta muy útil porque:

  • Puede gestionar todas las redirecciones a través del panel de WordPress, permitiendo a los usuarios no técnicos ver y actualizar las redirecciones cuando sea apropiado.
  • Puede hacer un seguimiento del número de visitas a su redirecciones, y también pistas de error ‘404 NO encontrado’.
  • Puede usar esto incluso si su servidor no ejecuta Apache o no le permite editar el archivo .htaccess (que es el método alternativo para añadir redirecciones en la mayoría de los casos).

Instalar y activar el plugin, a continuación, vaya a Herramientas> Redirection para empezar.

Inicio y finalización de su URL de redireccionamiento con expresiones regulares

Los primeros componentes esenciales de su redireccionamiento de expresiones regulares son los caracteres de “inicio” y “fin”. Esto le permite dictar el principio y el final de la expresión, y evitar una gran cantidad de redirecciones accidentales y bucles cuando se usa correctamente. He aquí un ejemplo:

^/old-page/$

Y aquí está el aspecto que tiene en el plugin:

Add new redirection

Observe que el cuadro “Expresión regular” debe ser cotejado en el plugin para respetar sus expresiones regulares.

Esta expresión sólo se aplicará a la página http://yourdomain.com/old-page/, exactamente en ese formato. Si usted no incluyó los caracteres de inicio (^) y de final ($), entonces, podría también aplicarse a una página como http://yourdomain.com/about/old-page/.

Esto es especialmente importante si su URL de la página es relativamente genérica y realista, y podría aparecer en medio de otra URL, como “nosotros” o “producto”. Al forzar un inicio y fin para su expresión, se ahorrá una gran cantidad de dolor de cabeza con accidentales coincidencias ocultas a lo largo de su sitio.

Haciendo barra final opcional

Usted puede haber notado que el ejemplo anterior se aplica a “/old-page/” con  una barra al final, pero no a “/old-page” sin una barra diagonal al final. Dado que muchos sistemas de gestión de contenidos son indecisos acerca de si se fuerza una barra final, forzar sin barra al final, o permitir que ambas versiones, los redireccionamientos siempre se deben tener en cuenta cualquiera de las versiones de cada URL.

A continuación, cómo utilizar una sola expresión regular para aplicarse a una página si tiene una barra inclinada o no:

^/old-page[/]?$

Hemos añadido [/]? (corchetes con un signo de interrogación después de) para indicar que este caracter debe ser tratado como opcional. Si se va a leer esta expresión en voz alta, sonaría algo así:

Inicio de la URL

^

Esto debe aparecer en la URL justo después del punto de partida

/old-page

En este punto, puede o no haber una barra inclinada

[/]?

Fin de la URL

$

Esta técnica permite crear una redirección que abarca dos direcciones URL posibles (con y sin barra). La siguiente técnica le permite ser realmente agresivo.

Creando redirecciones con comodines

Un comodín de redirección le permite crear una redirección basado en cualquier página que coincide con un patrón, independientemente de la dirección URL de una página específica. Esto es especialmente útil para redireccionar directorios enteros o secciones de un sitio antiguo a un nuevo sitio. Por ejemplo, recientemente he utilizado este para redirigir todas las URL que inicien con “/products/” (en plural) a la dirección URL correspondiente en el nuevo sitio, que inician con “/product/” (singular).

Aquí está la expresión regular con el patrón correspondiente (URL de la fuente):

^/old/(.*)$

Inicio de la URL

^

La URL debe contener esta cadena al principio

/old/

Comodín. Esto coincide con lo que aparece después de /old/ y lo guarda para su uso en la URL de destino a continuación.

(.*)

Fin de la URL. Esto no es realmente crucial, ya que estamos recogiendo nada al final como un comodín, pero no se pierde nada.

$

Y aquí está el destino (URL de destino):

/new/$1

El $1 arroja del primer comodín de su expresión. URL de la fuente. En teoría, usted podría tener un número ilimitado de comodines, como este:

^/old/(.*)/old-section/(.*)

Vuelve a dirigir a:

/new/$1/new-section/$2

Si bien esto no es un requisito muy común, tenga en cuenta que tiene flexibilidad para utilizar tantos comodines como sea necesario.

Realización de una transición suave

Esos fragmentos de código deben ayudar a lograr la gran mayoría de sus necesidades de redirección. Para evitar confusiones y problemas (y corriendo en una gran cantidad de círculos), siga estas pautas generales al configurar redirecciones:

  • Antes de probar, asegúrese de que sus cachés locales y cachés de alojamiento están totalmente limpias. El uso de una ventana de incógnito de Chrome también es útil, ya que su navegador a menudo almacena en caché los redireccionamientos detrás de escena, lo que le impide ver cambios en los redireccionamientos existentes de inmediato. Si está utilizando un complemento de almacenamiento en caché, un caché basado en host o un caché de Cloudflare, asegúrese de que también esté limpio.
  • Evitar el “stacking” siempre que sea posible. Esto causa confusión y es menos que ideal para el SEO (que realmente quiere una redirección por URL como un objetivo, en lugar de una “cadena” de redirecciones).
  • Si usted está recibiendo bucles de redirección locas con el plugin de redirección, póngase en contacto con su anfitrión acerca de la redirección con .htaccess. El formato de expresión regular es similar, pero usando .htaccess puede garantizar que las redirecciones problemáticas son ejecutadas antes de los de WordPress, lo que generalmente se resuelve cualquier problema persistente.
3 Comments
  • Jesus 12:29 pm, 21 de octubre del 2019 Responder

    Excelente explcacion! Me sacaste de un gran apuro con tu explicacion al punto. Saludos

  • Duoly Digital 8:05 am, 30 de julio del 2021 Responder

    Simple pero claro. Me ha servido de gran ayuda 🙂

  • canada online pharmacies 3:30 pm, 25 de febrero del 2022 Responder

    You said that effectively.

Deja un comentario