¿Cómo prevenir la redirección automática?

16

Wordpress tiene una función por la cual redirigirá automáticamente sus URL si percibe que están escritas incorrectamente. Aquí hay un ejemplo: tengo una página llamadamy-page

Si voy a:

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

inmediatamente me redirigirá a

www.mysite.com/my-page/

ya que no existe nada en la primera URL.

¿Cómo puedo desactivar esta función y, en su lugar, obtener un 404 si se ingresan URL incorrectas?

Mazateca
fuente
Si observa lo que está sucediendo (a través de HttpFox o WireShark o un rastreador de paquetes similar), esas páginas se redirigen con un Estado 301 - Movido permanentemente - que es el 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 la forma en que WordPress maneja las cosas cuando realmente mueve una página o cambia un enlace permanente, así que tenga cuidado. De todos modos, tú eliges, pero no estoy seguro de que sea una buena idea.
s_ha_dum
Sé que es algo bueno, lo entiendo. Sin embargo, tengo un caso de uso particular en el que no necesitaba ese comportamiento. Estoy desarrollando un complemento que maneja la redirección de URL y, por lo tanto, quiero anular ese comportamiento.
Mazateca
Aquí hay una respuesta más correcta: enlace
Binod - GoFundMonica

Respuestas:

23

Esto funcionó para mí:

remove_action('template_redirect', 'redirect_canonical');
Mazateca
fuente
¿Me puede guiar por lo que hará? ¿Qué es la redirección canónica? soy nuevo en wordpress
Yatin Mistry
¡Me acabas de salvar muchos dolores de cabeza! gracias ! :-D
Jenski
1
¿No hay ningún lugar donde podamos ver estos redireccionamientos para poder eliminarlos uno por uno?
Shane Jones
Esto es genial. ¿Sabes por qué wp-adminaún podría redirigirse después de usar esto?
Gezim
Puede encontrar una explicación detallada de este problema en dev4press.com/blog/wordpress/2015/…
ronnefeldt
5

Como sugirió Ash, puede desactivar la función utilizando el siguiente código:

remove_action('template_redirect', 'redirect_canonical');

Al observar la función redirect_canonical en canonical.php, parece que también puede modificar el comportamiento con su propio filtro.

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

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

Por lo tanto, podría escribir su propio filtro para modificar la redirección final o devolver nulo para detener la redirección, en función de la entrada, desactivando así la función para una URL particular o un subconjunto de URL.

Mike P.
fuente