Cum împiedicăm redirecționarea automată a erorilor 404 și a URL-urilor "incorecte"?

8 nov. 2012, 13:13:13
Vizualizări: 59.1K
Voturi: 23

WordPress are o funcționalitate prin care va redirecționa automat URL-urile dacă le percepe ca fiind scrise greșit. Iată un exemplu: Am o pagină numită my-page

Dacă accesez:

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

voi fi redirecționat imediat către

www.mysite.com/my-page/

deoarece nu există nimic la primul URL.

Cum pot dezactiva această funcționalitate și să primesc în schimb o eroare 404 dacă sunt introduse URL-uri incorecte?

3
Comentarii

Dacă observi ce se întâmplă (folosind HttpFox, WireShark sau un alt instrument similar de captură a pachetelor), acele pagini fac o redirecționare cu un Status 301 -- Mutat Permanent -- ceea ce este un comportament adecvat. Acest lucru ajută motoarele de căutare să-și actualizeze bazele de date, printre altele, iar redirecționarea ajută utilizatorii să găsească paginile. Acest lucru ar putea afecta modul în care WordPress gestionează situațiile când muti efectiv o pagină sau schimbi un permalink, așa că fii atent. Oricum, alegerea ta, dar nu sunt sigur că este o idee bună.

s_ha_dum s_ha_dum
8 nov. 2012 17:04:24

Știu că este un lucru bun, înțeleg asta. Totuși, am un caz particular în care nu am nevoie de acest comportament. Dezvolt un plugin care gestionează redirecționarea URL-urilor și de aceea vreau să suprascriu acest comportament.

Mazatec Mazatec
9 nov. 2012 13:28:15

Iată un răspuns mai corect: link

Binod Kalathil Binod Kalathil
19 dec. 2014 12:54:16
Toate răspunsurile la întrebare 3
6
33

Acest lucru a funcționat pentru mine:

remove_action('template_redirect', 'redirect_canonical');
8 nov. 2012 13:28:58
Comentarii

Poți să mă ghidezi pentru ce face acest lucru? Ce este o redirecționare canonică? Sunt nou în WordPress

Yatin Mistry Yatin Mistry
25 sept. 2014 10:50:37

Tocmai mi-ai economisit o mulțime de dureri de cap! Mulțumesc! :-D

Jenski Jenski
26 feb. 2016 12:34:55

Nu există nicăieri unde să putem vedea aceste redirecționări pentru a le putea elimina una câte una?

Shane Jones Shane Jones
22 feb. 2017 15:50:22

Este minunat. Știi de ce wp-admin ar putea să facă în continuare redirectare după utilizarea acesteia?

Gezim Gezim
3 feb. 2018 15:56:36

Poți găsi o explicație detaliată a acestei probleme la https://www.dev4press.com/blog/wordpress/2015/canonical-redirect-problem-and-solutions/

ronnefeldt ronnefeldt
14 ian. 2019 07:33:18

Cred că ar trebui să fie remove_filter în loc de remove_action.

Shawn Shawn
12 ian. 2020 04:09:56
Arată celelalte 1 comentarii
1
11

După cum a sugerat Ash, puteți dezactiva această funcționalitate folosind următorul cod:

remove_action('template_redirect', 'redirect_canonical');

Analizând funcția redirect_canonical din canonical.php, se pare că puteți modifica comportamentul folosind propriul filtru.

La sfârșitul funcției redirect_canonical(), există un apel pentru a filtra răspunsul final:

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

Așadar, puteți scrie propriul filtru pentru a modifica redirecționarea finală sau pentru a returna null și a opri redirecționarea, în funcție de input, dezactivând astfel funcționalitatea pentru un anumit URL sau un subset de URL-uri.

30 mar. 2017 21:44:02
Comentarii

Acest SO arată mai multe detalii despre cum să adaugi un filtru pentru cei ca mine care sunt puțin noi în WP

PBMe_HikeIt PBMe_HikeIt
30 ian. 2020 23:22:51
2

Poți dezactiva ghicirea permalink-urilor pentru erorile 404 fără a dezactiva redirecționarea URL-urilor canonice prin adăugarea următoarei linii de cod undeva în codul tău (de ex. în functions.php):

add_filter('do_redirect_guess_404_permalink', '__return_false');

Funcțiile relevante în codul WordPress sunt redirect_canonical și redirect_guess_404_permalink în wp-includes/canonical.php.

24 sept. 2020 18:10:03
Comentarii

Interesant este că documentația pare învechită, deoarece menționează că redirect_canonical este atât pentru redirecționări la nivel de TLD, cât și pentru redirecționări de eroare 404...

Jesse Nickles Jesse Nickles
24 sept. 2020 19:23:08

@JesseNickles, Da, redirect_canonical apelează redirect_guess_404_permalink dacă pagina este o eroare 404, dar efectuează și alte tipuri de redirecționări.

Ian Mackinnon Ian Mackinnon
24 sept. 2020 20:50:36