Rimuovere il reindirizzamento dopo aver modificato lo slug di una pagina

8 apr 2015, 16:36:52
Visualizzazioni: 37.8K
Voti: 10

In una delle mie pagine ho modificato lo slug per creare un URL diverso. Ad esempio:

Vecchio: http://example.com/old-slug

Nuovo: http://example.com/new-slug

WordPress ha fatto la sua cosa abituale reindirizzando http://example.com/old-slug a http://example.com/new-slug.

Vorrei rimuovere questo comportamento poiché un plugin che sto utilizzando fa uso dello slug in questione e il reindirizzamento ne sovrascrive il funzionamento.

Ho controllato questa domanda, e ho verificato nella mia tabella wp_postmeta la presenza di _wp_old_slug ma non viene restituito nulla. Il mio server è Nginx quindi non dovrebbe essere influenzato dai file .htaccess.

C'è qualcos'altro che posso fare per rimuovere questo reindirizzamento?

1
Commenti

Sembra strano che la tua tabella wp_postmeta non abbia alcuna chiave _wp_old_slug - la parte di codice che gestisce questo si trova in wp-includes/query.php (wp_old_slug_redirect()) - potresti aggiungere un'istruzione exit o di debug lì per verificare se viene chiamata. Inoltre, ricorda che se WordPress non riesce a trovare un permalink, cerca i post che corrispondono all'inizio, ad esempio se avevi un post chiamato /foobar, allora /foo verrà reindirizzato a esso.

William Turrell William Turrell
8 apr 2015 17:11:23
Tutte le risposte alla domanda 5
3

Questo (nel tuo functions.php) lo disattiverà (ma vedi anche il commento che ho lasciato):

remove_action('template_redirect', 'wp_old_slug_redirect');

Sembra strano che la tua tabella wp_postmeta non abbia alcuna chiave _wp_old_slug - la parte di codice che gestisce questo si trova in wp-includes/query.php (wp_old_slug_redirect()) - potresti aggiungere un'istruzione exit o di debug lì per verificare se viene chiamata.

Inoltre, ricorda che se WordPress non trova un permalink, cerca articoli con un inizio corrispondente, ad esempio se hai un articolo con permalink /foobar, allora /foo verrà reindirizzato ad esso.

8 apr 2015 17:14:30
Commenti

Potresti aggiungere il tuo commento nella risposta per arricchirla e avere tutto il contenuto in un unico posto?

Howdy_McGee Howdy_McGee
8 apr 2015 17:16:55

Infatti, il tuo commento era la soluzione. Ho una pagina chiamata Eventi che aveva lo slug events-page. Nessuna pagina aveva lo slug events ma quando visitavo example.com/events venivo reindirizzato alla pagina Eventi. WP stava ovviamente facendo corrispondere lo slug a una pagina con lo stesso titolo poiché non esisteva altro per esso.

harryg harryg
8 apr 2015 18:21:25

non ha funzionato per me

zEn feeLo zEn feeLo
2 apr 2019 20:15:38
2

questo ha funzionato per me:

   remove_filter('template_redirect', 'redirect_canonical');  

fonte: http://biostall.com/prevent-wordpress-redirecting-to-nearest-matching-url/

2 feb 2017 09:17:17
Commenti

non ha funzionato per me

zEn feeLo zEn feeLo
2 apr 2019 20:15:47

Sconcertante che WP abbia questa opzione abilitata di default

111 111
24 feb 2020 00:40:56
3

Per rimuovere manualmente i reindirizzamenti automatici dopo la modifica dello slug, è sufficiente eliminare le righe corrispondenti dalla tabella "wp-redirection-items" del database utilizzando phpMyAdmin.

Questo è il metodo migliore e più semplice che ti consente di rimuovere i reindirizzamenti per post specifici.

2 mar 2017 14:00:12
Commenti

Come fai a sapere che l'OP sta utilizzando proprio quel plugin?

fuxia fuxia
2 mar 2017 15:57:31

il tuo link non funziona

zEn feeLo zEn feeLo
2 apr 2019 20:16:10

Sembra che non ci sia una tabella chiamata wp-redirection-items

Flimm Flimm
20 mag 2024 15:23:52
2

Ogni articolo di WordPress ha il proprio slug, che viene generato automaticamente dal titolo del post. Se decidi di modificare lo slug del post in un secondo momento, WordPress ricorderà quello vecchio e lo reindirizzerà al nuovo. È possibile prevenire il reindirizzamento degli slug vecchi dei post in WordPress rimuovendo un paio di azioni dal core di WordPress con un piccolo snippet.

Aggiungi semplicemente il seguente codice al file functions.php del tuo tema corrente per impedire a WordPress di reindirizzare i vecchi slug dei post ai nuovi:

remove_action( 'template_redirect', 'wp_old_slug_redirect'); 
remove_action( 'post_updated',      'wp_check_for_changed_slugs', 12, 3 );
18 dic 2018 07:50:10
Commenti

come influisce sulla SEO?

zEn feeLo zEn feeLo
2 apr 2019 19:54:47

Ho aggiunto queste righe, non funziona

zEn feeLo zEn feeLo
2 apr 2019 19:58:03
2

Ciò che ha funzionato per me è stato il reset dei permalink. Basta andare su Impostazioni -> Permalink, selezionare "Predefinito", cliccare su Salva modifiche. Poi selezionare la struttura desiderata e cliccare nuovamente su Salva modifiche.

12 giu 2015 14:00:03
Commenti

non funziona

zEn feeLo zEn feeLo
2 apr 2019 20:13:07

Questo ha funzionato per me! Grazie.

wlarcheveque wlarcheveque
4 apr 2022 22:05:35