Wyłącz automatyczne uzupełnianie adresu URL Wordpress

15

Niedawno zauważyłem, że Wordpress próbuje automatycznie uzupełnić adres URL, gdy nie zostanie przesłany w całości. Na przykład mam adres URL posta, który wygląda następująco:

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

Jeśli przejdę do następującego adresu URL:

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

Widzę, że adres URL jest przesyłany do Wordpress, ale Wordpress dokonuje przekierowania 301 http://www.mysite.com/some-post-title.

Jak mogę wyłączyć to zachowanie?

Łukasz
źródło
Testowane rozwiązanie, które nie wyłącza całego kanonicznego systemu URL, a jedynie wyłącza część autouzupełniania „zgadywania”, zostało opisane tutaj
Hauke ​​P.

Odpowiedzi:

19

Uważam, że jest to redirect_canonicalfunkcja uzależniona template_redirect. Powinieneś być w stanie to wyłączyć za pomocą:

remove_filter('template_redirect', 'redirect_canonical'); 

Ale naprawdę powinieneś pomyśleć, czy chcesz to zrobić, ponieważ jest to dość skomplikowane i wykonuje kilka ważnych funkcji SEO:

Przekierowuje przychodzące linki do właściwego adresu URL na podstawie adresu URL witryny.

Wyszukiwarki uważają www.somedomain.com i somedomain.com za dwa różne adresy URL, gdy oba znajdują się w tej samej lokalizacji. To ulepszenie SEO zapobiega karom za zduplikowane treści poprzez przekierowanie wszystkich przychodzących linków do jednego lub drugiego.

Zapobiega przekierowywaniu kanałów, trackbacków, wyszukiwań, wyskakujących komentarzy i adresów URL administratora. Nie przekierowuje na IIS 7 nieobsługujących permalinków, podglądów stron / postów, administratora WP, Trackbacks, robots.txt, wyszukiwań ani żądań POST.

Spróbuje również znaleźć poprawny link, gdy użytkownik wpisze adres URL, który nie istnieje na podstawie dokładnego zapytania WordPress. Zamiast tego spróbuje przeanalizować adres URL lub zapytanie w celu znalezienia właściwej strony, do której należy przejść.

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

Następujące działania mogą zabić autouzupełnianie bez bałaganu w komponencie SEO, ale nie mogę tego obiecać. Kod jest ledwo testowany, ponieważ nigdy nie chciałem tego wyłączać. Naprawdę musiałbym się uczyć, redirect_canonicalaby być pewnym.

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
źródło
Dodałem ten fragment kodu na końcu mojego pliku /wp-include/canonical.php, a przekierowania nadal występują. czy robię coś źle? Czy ktoś jeszcze nie może wyłączyć tego zachowania?
user1380540,
4

Wydaje się to wyjątkowo nieodpowiedzialne, ponieważ „zgadywanie” następuje automatycznie. Byłbym o wiele bardziej otwarty na to, gdyby istniały sposoby na określenie, która strona jest właściwa.

Mam wiele stron, które są zbudowane jako sekwencja, a to automatyczne zgadywanie niewłaściwie wybiera odpowiedź na strony, które są (losowo?) Gdzieś w sekwencji, w przeciwieństwie do strony początkowej.

AKTUALIZACJA: Jest to znane zachowanie i jest rozważane tutaj: https://core.trac.wordpress.org/ticket/16557

FitPM
źródło