web-dev-qa-db-fra.com

Désactiver l'URL de saisie automatique de Wordpress

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?

12
Luke

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);
15
s_ha_dum

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

2
FitPM

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/

1
wrydere