J'ai récemment remarqué que Wordpress essaye de compléter automatiquement une URL lorsqu'elle n'est pas soumise dans son intégralité. Par exemple. J'ai une URL de publication qui ressemble à ceci:
http://www.mysite.com/some-post-title
Si je navigue vers l'URL suivante:
http://www.mysite.com/some-post-ti
Je peux voir que l'URL est soumise à Wordpress mais que Wordpress effectue une redirection 301 vers http://www.mysite.com/some-post-title
.
Comment puis-je désactiver ce comportement?
Je crois que c'est la redirect_canonical
fonction reliée à template_redirect
. Vous devriez pouvoir le désactiver avec:
remove_filter('template_redirect', 'redirect_canonical');
Mais vous devriez vraiment vous demander si vous voulez le faire, car c'est assez compliqué et exécute quelques fonctions importantes de référencement:
Redirige les liens entrants vers l'URL appropriée en fonction de l'URL du site.
Les moteurs de recherche considèrent www.somedomain.com et somedomain.com comme deux URL différentes lorsqu'elles vont au même endroit. Cette amélioration du référencement évite les pénalités pour les contenus en double en redirigeant tous les liens entrants vers l'un ou l'autre.
Empêche la redirection pour les flux, les rétroliens, les recherches, les popups de commentaires et les URL d’administrateur. Ne redirige pas sur IIS 7, aperçus de page/publication, WP admin, Trackbacks, robots.txt, recherches, ou sur POST demandes.
Je tenterai également de trouver le lien correct lorsqu'un utilisateur entre une URL inexistante basée sur une requête WordPress exacte. Essayera à la place d'analyser l'URL ou la requête pour tenter de déterminer la page à utiliser.
http://core.trac.wordpress.org/browser/tags/3.5.1/wp-includes/canonical.php#L13
Lespourraient} _ suivants tuent l'auto-complétion sans jouer avec le composant SEO, mais je ne peux pas vous le promettre. Le code est à peine testé car je n'ai jamais voulu le désactiver. Je devrais vraiment étudier redirect_canonical
pour être sûr de quoi que ce soit.
function kill_404_redirect_wpse_92103() {
if (is_404()) {
add_action('redirect_canonical','__return_false');
}
}
add_action('template_redirect','kill_404_redirect_wpse_92103',1);
Cela semble terriblement irresponsable, d’avoir cette "devinette" automatique. J'y serais beaucoup plus ouvert s'il existait un moyen de déterminer quelle page était la bonne.
J'ai de nombreuses pages qui sont construites comme une séquence, et cette auto-estimation consiste à choisir à tort de répondre avec des pages qui sont (au hasard) quelque part dans la séquence, par opposition à la page de départ.
UPDATE: Ceci est un comportement connu et est examiné ici: https://core.trac.wordpress.org/ticket/16557
Suite à la réponse de FitPM, un plug-in a été créé pour désactiver le comportement d'auto-estimation.
Cela fonctionne très bien pour moi sur Wordpress 4.8 à compter du 2 août 2017. Le plugin est ici: https://wordpress.org/plugins/disable-url-autocorrect-guessing/