Supporto » Varie ed eventuali » Cambio struttura permalink su sito con 2000 post

  • Ciao a tutti,
    devo cambiare per ragioni SEO la struttura permalink da /y/m/d/postname a /category/postname su un sito con oltre 2000 post (ultima versione WP), e ovviamente non voglio incorrere in errori 404.
    Da quanto ho letto fino a qualche tempo fa in molti dicevano di settare i 301 dopo il passaggio, ma secondo altri da una data versione di WP in poi (non sono riuscito a capire quale) WP gestisce in automatico i redirect 301 quando si cambia la struttura permalink.
    Ho fatto un test su un microsito con 2 post, ultima versione di WP e tema base, ed effettivamente sembra che il cambio di struttura non credi broken link, ma tutti i casi di broken link di cui leggo in giro mi terrorizzano.
    Dato che per ovvi motivi non vorrei andare alla cieca, avrei alcune domande per voi:
    1 – Cambiando la struttura permalink WP ora fa automaticamente i redirect? Se sì, sapete da che release (almeno controllo per sicurezza)?
    2 – Se così non fosse, come faccio a gestire il redirect in automatico senza doverlo fare articolo per articolo (sono evidentemente poco esperto)? L’eventuale utilizzo di plugin non rischia di avere risultati disastrosi qualora in futuro il plugin non venga più aggiornato?
    3 – Se avessi dei 404 dopo il cambiamento di struttura, tornando alla struttura precedente risolverei il problema o permarrebbe?
    Grazie mille!

Stai vedendo 4 repliche - dal 1 al 4 (di 4 totali)
  • No, WordPress non fa redirect automatici se si cambia l’intera struttura dei permalink, a meno che non si passi dalla struttura predefinita a postname, o in altri casi semplici, tipo da day and name a month and name e viceversa. Oppure li fa da vecchi slug a nuovi slug, in pratica quando cambi URL di post individuali.

    È quindi altamente consigliato approntare un redirect 301, meglio se nell’.htaccess e non via PHP soprattutto in presenza di molti articoli e pagine come nel tuo caso.
    Se lo fai per motivi SEO, prendi in considerazione il cambio al semplice /postname, invece che /category/postname, se non hai motivo di confusione tra i titoli o altro che giustifichi la presenza di /category/. Se scegli l’opzione /postname, puoi sfruttare un tool di Yoast che crea automaticamente il redirect 301 da inserire nell’.htaccess.

    Oppure, in ogni caso, puoi usare questo plugin, che non conosco personalmente ma nella cui pagina leggo che “di default gestisce tutti i redirect usando WordPress” (significa che li fa via PHP), ma che “si può configurare in modo che i redirect siano salvati sul file .htaccess e gestiti da Apache stesso” (se il tuo server è Apache), e nel tuo caso sarebbe meglio dato che passare per WordPress rallenterebbe il sito, meglio quindi che il redirect avvenga sul server prima. Da quanto si legge, dovrebbe esser possibile farlo anche su un server Nginx.

    I redirect 301 sono necessari al fine di reindirizzare tutti i link esterni da altri siti e i contenuti indicizzati, e subito dopo dovrai provvedere a creare una nuova sitemap da inoltrare ai motori di ricerca.
    Per quanto riguarda i link interni, se reindirizzi non è strettamente necessario un search and replace, ma te lo consiglio comunque per evitare altri redirect anche se gli eventuali ritardi fossero minimali.

    Ciao Tizz, grazie ma ovviamente mi serve il %category% per disambiguare tra titoli simili (nonché per indicizzare i nomi delle categorie rispettive).

    Una domanda: se io cambio (come ho fatto sul sito di test) la struttura permalink da /year/month/day/postname a /category/postname e (senza altre operazioni) un link che puntava sulla vecchia url (da un sito esterno) ora mi porta automaticamente alla nuova, non vuol dire che WP fa da solo il redirect e che quindi non è broken né c’è bisogno di 301 aggiuntivi?

    Perdona la domanda stupida, ma probabilmente mi sto perdendo qualcosa e volevo una conferma da qualcuno che ci capisce di più. Grazie!

    Allora, diciamo che il redirect automatico di WordPress si comporta in modo tale che è difficile dare per scontato ciò che farà o non farà, e come lo farà (a parte quei casi che ti dicevo prima, default>postname, eccetera), in presenza di tanti e diversi URL da gestire, quali quelli che si possono trovare in una struttura complessa di permalink come la tua e nella variabile di tanti post/pagine/categorie/magari custom post types e chissà che altro.
    Quindi a mio parere, ma mi posso sbagliare, direi che no, il caso singolo di quell’URL non prova da solo che WP gestirà tutti i redirect in modo corretto. Ma, ripeto, posso sbagliarmi e sono pronta a smentite, che credo si dovranno basare su esperienze e test diretti.

    Perché allora quel vecchio link funziona? Perché quando WordPress trova quello che sarebbe un 404 esegue una ricerca sullo slug (diciamo, su un frammento) dell’URL e cerca un post o una pagina con quello stesso frammento. Se ne trova uno, usa la funzione wp_redirect() e reindirizza a quello che gli sembra l’URL corretto.
    Avendo quindi tu “postname” sia nel vecchio che nel nuovo URL, è probabile che WordPress si sia “attaccato” a quello per il redirect.
    Lo farà anche per tutti gli altri? Non lo so.
    Può darsi, ma se stiamo parlando di un sito ben avviato e consolidato da anni con migliaia di post, io non mi fiderei fino in fondo. Un test serio non si può basare su una singola prova, quale che sia il test e quale che sia la prova.
    Poi, c’è il discorso che ho già fatto: WP per fare quel redirect usa una funzione PHP, non so quindi cosa può succedere a livello di prestazioni in un sito con 2.000 post con magari un traffico quotidiano notevole.

    Da qua, non potendo andare a fondo alla questione, potrei dirti allo stesso modo, in buona fede, ritenendo entrambi i consigli validi: no, non fare un cambiamento così importante su un sito grande già indicizzato!, oppure: fallo, basta che il redirect 301 sia fatto bene e ne vale la pena.
    Magari potresti affiancarti a un professionista per fare questa operazione che è comunque delicata, dato il volume del sito.

    …(nonché per indicizzare i nomi delle categorie rispettive).

    I nomi delle categorie apparirebbero comunque, e sarebbero inviati ai motori nella sitemap delle categorie come in ogni altro caso, solo che invece d’essere /categoria/nome della categoria/ sarebbero /nome della categoria/ e basta.

    • Questa risposta è stata modificata 2 mesi, 2 settimane fa da  tizz.

    Davvero grazie per la risposta dettagliata e puntuale, lo apprezzo molto!
    Probabilmente mi converrà cercare qualcuno che abbia un minimo di competenza con il regex e mi dica la stringa da inserire in htaccess. Se hai qualche nome da consigliare o qualche risorsa, ovviamente sono tutto orecchi.
    Grazie ancora!

Stai vedendo 4 repliche - dal 1 al 4 (di 4 totali)
  • Devi essere collegato per rispondere a questo topic.