Come prevenire il reindirizzamento automatico?


16

Wordpress ha una funzione in base alla quale reindirizzerà automaticamente i tuoi URL se li percepisce come scritti in modo errato. Ecco un esempio: ho una pagina chiamatamy-page

Se vado a:

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 funzione e invece ottenere un 404 se vengono digitati URL errati?


Se guardi cosa sta succedendo (tramite HttpFox o WireShark o uno sniffer di pacchetti simile), quelle pagine reindirizzano con uno stato 301 - Spostato in modo permanente - che è il comportamento appropriato. Aiuta i motori di ricerca a mantenere aggiornati i loro database e il reindirizzamento aiuta gli utenti a trovare le pagine. Ciò può influire sul modo in cui WordPress gestisce le cose quando si sposta effettivamente una pagina o si modifica un permalink, quindi fai attenzione. Comunque, la tua scelta, ma non sono sicuro che sia una buona idea.
s_ha_dum,

So che è una buona cosa, lo capisco. Tuttavia, ho un caso d'uso particolare in cui non avevo bisogno di quel comportamento. Sto sviluppando un plug-in che gestisce il reindirizzamento URL e quindi desidero ignorare quel comportamento.
Mazatec,

Ecco una risposta più corretta: link
Binod - GoFundMonica

Risposte:


23

Questo ha funzionato per me:

remove_action('template_redirect', 'redirect_canonical');

Puoi guidarmi per quello che farà? che cos'è il reindirizzamento canonico? sono nuovo di
WordPress

Mi hai appena risparmiato un sacco di mal di testa! grazie ! MrGreen
Jenski il

1
Non c'è nessun posto dove possiamo vedere questi reindirizzamenti in modo da poterli rimuovere uno per uno?
Shane Jones,

Questo è fantastico Sai perché wp-adminpotrebbe essere ancora il reindirizzamento dopo averlo utilizzato?
Gezim,

Puoi trovare una spiegazione dettagliata di questo problema su dev4press.com/blog/wordpress/2015/…
ronnefeldt

5

Come suggerito da Ash, puoi disattivare la funzione usando il seguente codice:

remove_action('template_redirect', 'redirect_canonical');

Guardando la funzione redirect_canonical in canonical.php, sembrerebbe che tu possa anche modificare il comportamento con il tuo filtro.

Alla fine della funzione redirect_canonical (), c'è una chiamata per filtrare la risposta 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 particolare URL o un sottoinsieme di URL.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.