Come impedire il reindirizzamento automatico degli errori 404 e degli URL "errati"?

8 nov 2012, 13:13:13
Visualizzazioni: 59.1K
Voti: 23

WordPress ha una funzionalità che reindirizza automaticamente gli URL se li percepisce come scritti in modo errato. Ecco un esempio: ho una pagina chiamata my-page

Se vado su:

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

mi reindirizzerà immediatamente a

www.mysite.com/my-page/

poiché non esiste nulla al primo URL.

Come posso disattivare questa funzionalità e ottenere invece un errore 404 se vengono digitati URL errati?

3
Commenti

Se osservi cosa sta succedendo (tramite HttpFox, WireShark o un altro packet sniffer simile), quelle pagine reindirizzano con uno Status 301-- Spostato Permanentemente-- che è un comportamento appropriato. Aiuta i motori di ricerca a mantenere aggiornati i loro database tra le altre cose, e il reindirizzamento aiuta gli utenti a trovare le pagine. Questo può influenzare come WordPress gestisce le cose quando effettivamente sposti una pagina o cambi un permalink, quindi fai attenzione. Comunque, la scelta è tua ma non sono sicuro che sia una buona idea.

s_ha_dum s_ha_dum
8 nov 2012 17:04:24

So che è una cosa positiva, lo capisco. Tuttavia, ho un caso d'uso particolare in cui non ho bisogno di quel comportamento. Sto sviluppando un plugin che gestisce il reindirizzamento degli URL e quindi voglio sovrascrivere quel comportamento.

Mazatec Mazatec
9 nov 2012 13:28:15

Ecco una risposta più corretta: link

Binod Kalathil Binod Kalathil
19 dic 2014 12:54:16
Tutte le risposte alla domanda 3
6
33

Questo ha funzionato per me:

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

Puoi guidarmi su cosa farà? Cos'è un reindirizzamento canonico? Sono nuovo su WordPress

Yatin Mistry Yatin Mistry
25 set 2014 10:50:37

Mi hai appena risparmiato un sacco di mal di testa! Grazie! :-D

Jenski Jenski
26 feb 2016 12:34:55

Non c'è da nessuna parte dove possiamo vedere questi reindirizzamenti così da poterli rimuovere uno per uno?

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

Fantastico. Sai perché wp-admin potrebbe ancora reindirizzare dopo aver usato questo?

Gezim Gezim
3 feb 2018 15:56:36

Puoi trovare una spiegazione dettagliata di questo problema su https://www.dev4press.com/blog/wordpress/2015/canonical-redirect-problem-and-solutions/

ronnefeldt ronnefeldt
14 gen 2019 07:33:18

Credo che dovrebbe essere remove_filter invece di remove_action.

Shawn Shawn
12 gen 2020 04:09:56
Mostra i restanti 1 commenti
1
11

Come suggerito da Ash, puoi disattivare la funzionalità utilizzando il seguente codice:

remove_action('template_redirect', 'redirect_canonical');

Analizzando la funzione redirect_canonical in canonical.php, sembra che tu possa anche modificare il comportamento con un tuo filtro personalizzato.

Alla fine della funzione redirect_canonical(), c'è una chiamata per filtrare il risultato finale:

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

Quindi potresti scrivere il tuo filtro per modificare il reindirizzamento finale o restituire null per interrompere il reindirizzamento, in base all'input, disattivando così la funzionalità per un URL specifico o un sottoinsieme di URL.

30 mar 2017 21:44:02
Commenti

Questa domanda su Stack Overflow mostra maggiori dettagli su come aggiungere un filtro per quelli come me che sono un po' nuovi a WordPress

PBMe_HikeIt PBMe_HikeIt
30 gen 2020 23:22:51
2

Puoi disabilitare l'indovinamento dei permalink per gli errori 404 senza disabilitare il reindirizzamento degli URL canonici aggiungendo la seguente riga da qualche parte nel tuo codice (ad esempio, in functions.php):

add_filter('do_redirect_guess_404_permalink', '__return_false');

Le funzioni rilevanti nel codice di WordPress sono redirect_canonical e redirect_guess_404_permalink in wp-includes/canonical.php.

24 set 2020 18:10:03
Commenti

Curiosamente, la documentazione sembra obsoleta, perché dice che redirect_canonical è sia per i reindirizzamenti a livello di TLD che per i reindirizzamenti di errori 404...

Jesse Nickles Jesse Nickles
24 set 2020 19:23:08

@JesseNickles, Sì, redirect_canonical chiama redirect_guess_404_permalink se la pagina è un 404, ma esegue anche altri reindirizzamenti.

Ian Mackinnon Ian Mackinnon
24 set 2020 20:50:36