Deaktivieren Sie die automatische Vervollständigung der Wordpress-URL

15

Ich habe kürzlich festgestellt, dass Wordpress versucht, eine URL automatisch zu vervollständigen, wenn sie nicht vollständig übermittelt wird. Ich habe zB eine Post-URL, die so aussieht:

http://www.mysite.com/some-post-title

Wenn ich zur folgenden URL navigiere:

http://www.mysite.com/some-post-ti

Ich kann sehen, dass die URL an Wordpress übermittelt wird, Wordpress jedoch eine 301-Weiterleitung durchführt http://www.mysite.com/some-post-title.

Wie kann ich dieses Verhalten deaktivieren?

Luke
quelle
Eine getestete Lösung, die nicht das gesamte kanonische URL-System deaktiviert, sondern nur den Teil "Erraten" der automatischen Vervollständigung deaktiviert, wird hier beschrieben
Hauke ​​P.,

Antworten:

19

Ich glaube, das ist die redirect_canonicalFunktion, an die man gebunden ist template_redirect. Sie sollten es deaktivieren können mit:

remove_filter('template_redirect', 'redirect_canonical'); 

Aber Sie sollten sich wirklich überlegen, ob Sie das tun möchten, da es ziemlich kompliziert ist und einige wichtige SEO-Funktionen ausführt:

Leitet eingehende Links basierend auf der Website-URL an die richtige URL weiter.

Suchmaschinen betrachten www.somedomain.com und somedomain.com als zwei verschiedene URLs, wenn beide an den gleichen Ort gehen. Diese SEO-Verbesserung verhindert die Bestrafung doppelter Inhalte, indem alle eingehenden Links auf die eine oder andere umgeleitet werden.

Verhindert die Umleitung für Feeds, Trackbacks, Suchvorgänge, Kommentar-Popups und Administrator-URLs. Leitet nicht auf nicht-Pretty-Permalink-unterstützende IIS 7-, Seiten- / Post-Vorschau-, WP-Administrator-, Trackback-, robots.txt-, Such- oder POST-Anforderungen um.

Wird auch versuchen, den richtigen Link zu finden, wenn ein Benutzer eine URL eingibt, die nicht auf der genauen WordPress-Abfrage basiert. Versucht stattdessen, die URL oder die Abfrage zu analysieren, um die richtige Seite zu ermitteln.

http://core.trac.wordpress.org/browser/tags/3.5.1/wp-includes/canonical.php#L13

Das Folgende könnte die Autovervollständigung beenden, ohne an der SEO-Komponente herumzuspielen, aber das kann ich nicht versprechen. Der Code ist kaum getestet, da ich dies nie deaktivieren wollte. Ich müsste wirklich studieren redirect_canonical, um sicher zu sein, dass irgendetwas passiert.

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);
s_ha_dum
quelle
Ich habe dieses Code-Snippet am Ende meiner /wp-includes/canonical.php-Datei hinzugefügt und die Weiterleitungen finden immer noch statt. Mache ich etwas falsch? Kann noch jemand dieses Verhalten deaktivieren?
user1380540
3

Dies scheint schrecklich verantwortungslos zu sein, dieses "Erraten" automatisch zu haben. Ich wäre viel offener dafür, wenn es Möglichkeiten gäbe, die richtige Seite zu definieren.

Ich habe zahlreiche Seiten, die als Sequenz erstellt wurden, und dieses automatische Erraten wählt fälschlicherweise die Antwort mit Seiten, die sich (zufällig?) Irgendwo in der Sequenz befinden, im Gegensatz zur Startseite.

UPDATE: Dies ist ein bekanntes Verhalten, das hier berücksichtigt wird: https://core.trac.wordpress.org/ticket/16557

FitPM
quelle