Comment empêcher la redirection automatique?

16

Wordpress a une fonctionnalité par laquelle il redirigera automatiquement vos URL s'il les perçoit comme étant mal écrites. Voici un exemple: j'ai une page appeléemy-page

Si je vais à:

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

il me redirigera immédiatement vers

www.mysite.com/my-page/

car rien n'existe à la première URL.

Comment puis-je désactiver cette fonctionnalité et obtenir simplement un 404 si des URL incorrectes sont saisies?

Mazatec
la source
Si vous regardez ce qui se passe (via HttpFox ou WireShark ou un renifleur de paquets similaire), ces pages redirigent avec un statut 301 - Déplacé de manière permanente - qui est un comportement approprié. Il aide entre autres les moteurs de recherche à maintenir leurs bases de données à jour, et la redirection aide les utilisateurs à trouver des pages. Cela peut affecter la façon dont WordPress gère les choses lorsque vous déplacez réellement une page ou modifiez un permalien, alors soyez prudent. Quoi qu'il en soit, votre choix mais je ne suis pas sûr que ce soit une bonne idée.
s_ha_dum
Je sais que c'est une bonne chose, je le comprends. Cependant, j'ai un cas d'utilisation particulier où je n'avais pas besoin de ce comportement. Je développe un plugin qui gère la redirection d'URL et je veux donc remplacer ce comportement.
Mazatec
Voici une réponse plus correcte: lien
Binod - GoFundMonica

Réponses:

23

Cela a fonctionné pour moi:

remove_action('template_redirect', 'redirect_canonical');
Mazatec
la source
Pouvez-vous me guider pour ce qu'il fera? qu'est-ce que la redirection canonique? je suis nouveau sur wordpress
Yatin Mistry
Tu m'as sauvé beaucoup de maux de tête! Je vous remercie ! :-D
Jenski
1
N'y a-t-il nulle part où nous pouvons voir ces redirections afin que nous puissions les supprimer une par une?
Shane Jones
C'est bien. Savez-vous pourquoi la wp-adminredirection pourrait encore avoir lieu après avoir utilisé cela?
Gezim
Vous pouvez trouver une explication détaillée de ce problème sur dev4press.com/blog/wordpress/2015/…
ronnefeldt
5

Comme l'a suggéré Ash, vous pouvez désactiver la fonctionnalité en utilisant le code suivant:

remove_action('template_redirect', 'redirect_canonical');

En regardant la fonction redirect_canonical dans canonical.php, il semblerait que vous puissiez également modifier le comportement avec votre propre filtre.

À la fin de la fonction redirect_canonical (), il y a un appel pour filtrer la réponse finale:

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

Vous pouvez donc écrire votre propre filtre pour modifier la redirection finale ou retourner null pour arrêter la redirection, en fonction de l'entrée, désactivant ainsi la fonctionnalité pour une URL particulière ou un sous-ensemble d'URL.

Mike P.
la source