TruquiTrucos Dev – Cómo evitar que WordPress intente adivinar qué URL quieres visitar

Publicada en WordPress.

El otro día estaba haciendo pruebas con una web de desarrollo y me encontré con un detalle curioso: si escribes mal la URL de una página en un sitio WordPress, el propio WordPress intentará entender qué es lo que le estás pidiendo y «arreglará» tu petición para evitar mostrarte un error 404. Veámoslo con un ejemplo, que es más fácil de entender.

Hace unas semanas escribí una entrada en el blog llamada «Descubre dónde añadiste errores en el código usando Git Bisect». Si pulsas en el enlace, verás que su URL es https://neliosoftware.com/es/blog/git-bisect-para-encontrar-commit-con-errores/. Pues bien, ¿qué pasaría si escribimos una URL que se parezca a la buena pero que sea incorrecta? Pues lo puedes descubrir tú mismo: escribe https://neliosoftware.com/es/blog/git-bisect en tu navegador y verás que, ¡oh, sorpresa!, WordPress te envía a la página que toca:

Redirección de una URL inválida a una URL válida
Redirección de una URL inválida a una URL válida.

Pero es que esto no siempre funciona… si en lugar de poner «git-bisect» (que es como empieza la entrada) hubiera escrito «encontrar-commit-con-errores», entonces sí me saldría un error 404:

Error 404 con una URL incorrecta
Error 404 con una URL incorrecta.

Parece, pues, que esta funcionalidad de WordPress solo funciona (valga la redundancia) cuando estamos poniendo el nombre incompleto desde el principio…

Entonces la duda es: que WordPress intente arreglar una URL que no existe en lugar de devolver un 404, ¿es bueno o es malo? Y la respuesta es que parece que no hay consenso.

Según el bug #16557 reportado hace ahora 9 años, debería existir un filtro que permitiera desactivar este comportamiento según desee el usuario. Pero a pesar de que tenemos un parche para ello, por algún motivo no se ha metido la corrección en el núcleo de WordPress aún (y a saber cuándo llegará… si es que llega algún día).

Cómo evitar la auto-corrección de URL

Para solucionar este «problema» (si es que lo consideras un problema), tienes dos opciones. O bien aplicas la solución que propuso Andrew Nacin (uno de los desarrolladores líder de WordPress) añadiendo esta pequeña función:

function remove_redirect_guess_404_permalink( $redirect_url ) {
  if ( is_404() ) {
    return false;
  }//end if
  return $redirect_url;
}//end remove_redirect_guess_404_permalink()
add_filter( 'redirect_canonical', 'remove_redirect_guess_404_permalink' );

siguiendo las instrucciones que te dimos en esta otra entrada, o bien instalas el plugin Disable URL Autocorrect Guessing de Hauke Pribnow, quien ya te da la faena hecha.

Imagen destacada de David Brooke Martin en Unsplash.

FlojaNo está malBienMuy bien¡Impecable! (1 votos, promedio: 5,00 de 5)
Cargando…

Deja un comentario

No publicaremos tu correo electrónico. Los campos obligatorios están marcados con: •

He leído y acepto la Política de privacidad de Nelio Software

Al marcar la casilla de aceptación estás dando tu legítimo consentimiento para que tu información personal se almacene en SiteGround y sea usada por Nelio Software con el propósito único de publicar aquí este comentario. Contáctanos para corregir, limitar, eliminar o acceder a tu información.