Cómo evitar la redirección automática de errores 404 y URLs "incorrectas"

8 nov 2012, 13:13:13
Vistas: 59.1K
Votos: 23

WordPress tiene una característica mediante la cual redirige automáticamente tus URLs si detecta que están escritas incorrectamente. Aquí hay un ejemplo: tengo una página llamada my-page

Si voy a:

www.mysite.com/something/my-page/

me redirigirá inmediatamente a

www.mysite.com/my-page/

ya que nada existe en la primera URL.

¿Cómo puedo desactivar esta característica y en su lugar simplemente obtener un 404 si se escriben URLs incorrectas?

3
Comentarios

Si observas lo que está sucediendo (a través de HttpFox, WireShark o un analizador de paquetes similar), esas páginas redirigen con un estado 301 - Movido Permanentemente - lo cual es un comportamiento apropiado. Ayuda a los motores de búsqueda a mantener sus bases de datos actualizadas, entre otras cosas, y la redirección ayuda a los usuarios a encontrar páginas. Esto puede afectar cómo WordPress maneja las cosas cuando realmente mueves una página o cambias un enlace permanente, así que ten cuidado. En fin, es tu elección pero no estoy seguro de que sea una buena idea.

s_ha_dum s_ha_dum
8 nov 2012 17:04:24

Sé que es algo bueno, lo entiendo. Sin embargo, tengo un caso de uso particular donde no necesito ese comportamiento. Estoy desarrollando un plugin que maneja redirecciones de URL y por eso quiero anular ese comportamiento.

Mazatec Mazatec
9 nov 2012 13:28:15

Aquí hay una respuesta más correcta: enlace

Binod Kalathil Binod Kalathil
19 dic 2014 12:54:16
Todas las respuestas a la pregunta 3
6
33

Esto funcionó para mí:

remove_action('template_redirect', 'redirect_canonical');
8 nov 2012 13:28:58
Comentarios

¿Puedes guiarme sobre qué hace? ¿Qué es una redirección canónica? Soy nuevo en WordPress

Yatin Mistry Yatin Mistry
25 sept 2014 10:50:37

¡Acabas de ahorrarme muchos dolores de cabeza! ¡Gracias! :-D

Jenski Jenski
26 feb 2016 12:34:55

¿No hay ningún lugar donde podamos ver estas redirecciones para poder eliminarlas una por una?

Shane Jones Shane Jones
22 feb 2017 15:50:22

Esto es genial. ¿Sabes por qué wp-admin podría seguir redirigiendo después de usar esto?

Gezim Gezim
3 feb 2018 15:56:36

Puedes encontrar una explicación detallada de este problema en https://www.dev4press.com/blog/wordpress/2015/canonical-redirect-problem-and-solutions/

ronnefeldt ronnefeldt
14 ene 2019 07:33:18

Creo que debería ser remove_filter en lugar de remove_action.

Shawn Shawn
12 ene 2020 04:09:56
Mostrar los 1 comentarios restantes
1
11

Como Ash sugirió, puedes desactivar esta funcionalidad utilizando el siguiente código:

remove_action('template_redirect', 'redirect_canonical');

Al analizar la función redirect_canonical en canonical.php, parece que también puedes modificar su comportamiento con tu propio filtro.

Al final de la función redirect_canonical(), hay una llamada para filtrar el resultado final:

$redirect_url = apply_filters( 'redirect_canonical', $redirect_url, $requested_url );

Por lo tanto, podrías escribir tu propio filtro para modificar la redirección final o devolver null para detener la redirección, basándote en la entrada, desactivando así la funcionalidad para una URL específica o un conjunto de URLs.

30 mar 2017 21:44:02
Comentarios

Este hilo en Stack Overflow muestra más detalles sobre cómo agregar un filtro para aquellos como yo que son algo nuevos en WordPress

PBMe_HikeIt PBMe_HikeIt
30 ene 2020 23:22:51
2

Puedes deshabilitar la adivinanza de enlaces permanentes para errores 404 sin desactivar la redirección de URLs canónicas añadiendo la siguiente línea en algún lugar de tu código (por ejemplo, en functions.php):

add_filter('do_redirect_guess_404_permalink', '__return_false');

Las funciones relevantes en el código de WordPress son redirect_canonical y redirect_guess_404_permalink en wp-includes/canonical.php.

24 sept 2020 18:10:03
Comentarios

Curiosamente, la documentación parece desactualizada, porque dice que redirect_canonical es para redirecciones a nivel de TLD y también para redirecciones de errores 404...

Jesse Nickles Jesse Nickles
24 sept 2020 19:23:08

@JesseNickles, Sí, redirect_canonical llama a redirect_guess_404_permalink si la página es un 404, pero también realiza otras redirecciones.

Ian Mackinnon Ian Mackinnon
24 sept 2020 20:50:36